Heim >Datenbank >MySQL-Tutorial >Warum gibt die Authentifizierung mit meinem Salted-Passwort immer den Wert „true' zurück?

Warum gibt die Authentifizierung mit meinem Salted-Passwort immer den Wert „true' zurück?

DDD
DDDOriginal
2024-12-11 21:35:11888Durchsuche

Why is My Salted Password Authentication Always Returning True?

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!

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