Heim  >  Artikel  >  Backend-Entwicklung  >  Warum überprüft die Funktion Password_Verify() keine gehashten Passwörter?

Warum überprüft die Funktion Password_Verify() keine gehashten Passwörter?

Patricia Arquette
Patricia ArquetteOriginal
2024-10-21 07:07:30914Durchsuche

Why is the Password_Verify() Function Not Verifying Hashed Passwords?

PHP passwort_hash(), passwort_verify()

In Ihrem Registrierungsskript verwenden Sie die PHP-Funktion „password_hash()“, um Benutzerpasswörter zu verschlüsseln und in der Datenbank zu speichern . Wenn Benutzer versuchen, sich anzumelden, verwenden Sie „password_verify()“, um das eingegebene Passwort mit der gehashten Version in der Datenbank zu vergleichen. Allerdings stimmen die Passwörter nicht überein, was auf ein Problem in Ihrem Password_verify()-Aufruf hinweist.

password_verify() Verwendung

password_verify() benötigt zwei Parameter:

  • $password: Das vom Benutzer bei der Anmeldung eingegebene Klartext-Passwort.
  • $hash: Das in der Datenbank gespeicherte Hash-Passwort.

Es vergleicht das Klartext-Passwort mit der gehashten Version und gibt true zurück, wenn sie übereinstimmen, oder false, wenn nicht.

Ihr Codeproblem

In Ihrem Anmeldeskript Sie Sie übergeben das Klartext-Passwort ($pwd) und das gehashte Passwort ($password) an password_verify():

if(($user_id == $p_num) && (password_verify($pwd, $password))){

Sie verwenden jedoch auch var_dump(), um die Variablen während des Vorgangs zu überprüfen Vergleich, der ihre Werte verändern kann. Die Ausgabe von var_dump() zeigt, dass das Klartext-Passwort ($pwd) auf „1“ geändert wird, während das gehashte Passwort ($password) dasselbe bleibt, wie es in der Datenbank gespeichert ist.

Korrekte Verwendung

Um das Problem zu beheben, entfernen Sie die var_dump()-Aufrufe aus Ihrem Code und stellen Sie sicher, dass $pwd das Klartext-Passwort enthält, das der Benutzer bei der Anmeldung eingegeben hat. Ihr Login-Code sollte etwa so aussehen:

if(($user_id == $p_num) && (password_verify($pwd, $password))){

Das obige ist der detaillierte Inhalt vonWarum überprüft die Funktion Password_Verify() keine gehashten Passwörter?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn