Heim >Datenbank >MySQL-Tutorial >Warum gibt die Authentifizierung mit meinem Salted-Passwort immer den Wert „true' zurück?
Zurückziehen gesalzener Passwörter zur Authentifizierung
Bei der Implementierung einer Mitgliederseite mit in einer Datenbank gespeicherten gesalzenen Passwörtern erfordert der Anmeldemechanismus sorgfältige Aufmerksamkeit. Die Verwendung eines Salted-Passwort-Ansatzes erhöht zwar die Sicherheit, kann jedoch auch zu Herausforderungen bei der Überprüfung der Benutzeranmeldeinformationen führen.
Problem:
Auf der Mitglieder-Anmeldeseite (sofern vorhanden) tritt ein Fehler auf Der Eintrag scheint die Prüfung zur Überprüfung der Existenz des Benutzers zu bestehen. Insbesondere gibt die Auswertung von $result === false immer false zurück, wodurch das erwartete Verhalten verhindert wird.
Lösung:
Die Hauptursache des Problems liegt in der Vorgehensweise zum Abrufen des Passwort-Hash aus der Datenbank. Um die Benutzeranmeldeinformationen zu überprüfen, muss zunächst der Salted-Passwort-Hash abgerufen werden, der dem angegebenen Benutzernamen entspricht:
$saltQuery = "SELECT salt FROM users WHERE name = '$name';"; $result = mysqli_query($connect, $saltQuery); $row = mysqli_fetch_assoc($result); $salt = $row['salt'];
Sobald der Salt erhalten wurde, sollte er zum Hashen des bereitgestellten Passworts verwendet werden:
$saltedPW = $password.$salt; $hashedPW = hash('sha256', $saltedPW);
Das resultierende gehashte Passwort sollte dann verwendet werden, um die Datenbank nach dem des Benutzers abzufragen Existenz:
$sqlQuery = "SELECT * FROM users WHERE name = '$name' AND password = '$hashedPW'";
Weitere Überlegungen:
Bei der Überprüfung von Passwörtern ist es wichtig, starke Passwort-Hashing-Funktionen wie bcrypt oder Argon2 zu verwenden, die sichere und zeitintensive Bereitstellung bieten Hashing-Algorithmen. Darüber hinaus sollten vorbereitete Anweisungen verwendet werden, um SQL-Injection-Angriffe zu verhindern.
Das obige ist der detaillierte Inhalt vonWarum gibt die Authentifizierung mit meinem Salted-Passwort immer den Wert „true' zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!