Password_hash generiert verschiedene Hashes für die gleiche Eingabe
In einem Anmeldesystem ist es aus Sicherheitsgründen üblich, Passwörter zu hashen. Bei einigen Benutzern kann jedoch ein Problem auftreten, bei dem „password_hash“ jedes Mal einen anderen Hashwert für dasselbe Passwort liefert. Dies kann eine erfolgreiche Verifizierung mit „password_verify()“ verhindern.
Das Verhalten von Password_hash verstehen
Password_hash ist so konzipiert, dass für jeden Hashing-Vorgang ein eindeutiger Salt generiert wird. Dieses Salt wird vor dem Hashing an das Passwort angehängt, sodass es praktisch unmöglich ist, den Hash-Wert vorherzusagen. Selbst das gleiche Passwort erzeugt aufgrund des zufälligen Salt jedes Mal einen anderen Hash.
Behebung des Verifizierungsproblems
Um das Passwort zu verifizieren, müssen Sie das Original bereitstellen ungehashtes Passwort als erstes Argument für Password_verify(). Das zweite Argument sollte das in der Datenbank gespeicherte Hash-Passwort sein.
Beispielcode für die Verifizierung
$password4 = 'PlaintextPassword'; $dbpassword = 'HashedPasswordFromDatabase'; if (password_verify($password4, $dbpassword)) { // Password verified } else { // Password does not match }
Zusätzliche Sicherheitsmaßnahmen
Auf Wunsch können Sie die Sicherheit von password_hash erhöhen, indem Sie den Kostenfaktor erhöhen. Die Standardkosten betragen 10, Sie können jedoch für zusätzlichen Schutz einen höheren Wert wie 15 festlegen.
$password = password_hash($password4, PASSWORD_DEFAULT, ['cost' => 15]);
Das obige ist der detaillierte Inhalt vonWarum generiert Password_hash unterschiedliche Hashes für dieselbe Eingabe?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!