Warum schlägt die PHP-Passwortüberprüfung fehl, wenn der Passwort-Hash nicht übereinstimmt?

Linda Hamilton
Freigeben: 2024-10-21 07:04:02
Original
571 Leute haben es durchsucht

Why does PHP password verification fail with a password hash mismatch?

PHP passwort_hash(), passwort_verify()

In Ihrem Registrierungsskript hashen Sie das Passwort korrekt mit passwort_hash() und speichern es in die Datenbank. Wenn Sie jedoch das Passwort während der Anmeldung mit „password_verify()“ überprüfen, stoßen Sie auf eine Nichtübereinstimmung.

Das von Ihnen bereitgestellte Snippet zeigt, dass das in der Datenbank gespeicherte Passwort gehasht ist (beginnend mit „$2y$10$“). , während das vom Benutzer eingegebene Passwort im Klartext vorliegt (string(1) „1“). Das Problem liegt in der Art und Weise, wie Sie das Passwort aus der Datenbank abrufen.

Im Anmeldeskript rufen Sie die Passwortspalte ohne weitere Verarbeitung direkt aus dem Datenbankergebnis ab. Das gespeicherte Passwort ist jedoch gehasht und muss enthasht werden, bevor es mit dem Klartext-Passwort verglichen werden kann, das der Benutzer mit „password_verify()“ eingegeben hat.

Lösung:

Im Anmeldeskript müssen Sie vor der Verwendung von „password_verify()“ das gespeicherte Hash-Passwort aus der Datenbank abrufen und es dann mithilfe der Funktion „password_hash()“ mit dem Algorithmus „PASSWORD_DEFAULT“ enthashen. Hier ist der korrigierte Code für das Anmeldeskript:

<code class="php">// ...same code as before...

$stored_hash = $row['password']; // Retrieve the stored hashed password
if (password_verify($pwd, $stored_hash)) {
    // ...same code as before...
}</code>
Nach dem Login kopieren

Diese Änderung stellt sicher, dass das in der Datenbank gespeicherte Passwort ordnungsgemäß enthasht wird, bevor es mit dem vom Benutzer eingegebenen Klartext-Passwort verglichen wird, sodass „password_verify()“ funktioniert richtig.

Das obige ist der detaillierte Inhalt vonWarum schlägt die PHP-Passwortüberprüfung fehl, wenn der Passwort-Hash nicht übereinstimmt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!