Überprüfen von gesalzenen Passwörtern bei der Datenbankanmeldung
Bei der Entwicklung einer Mitgliederseite ist die Sicherung der Anmeldeinformationen von entscheidender Bedeutung. Ein wesentlicher Aspekt ist die Implementierung von gesalzenen Passwörtern, die den Passwortschutz verbessern, indem dem Passwort vor dem Hashing eine zufällige Zeichenfolge hinzugefügt wird.
Problem:
Im bereitgestellten Code ist die Durch einen Fehler auf der Anmeldeseite kann jedes Mitglied trotz falscher Passworteingabe auf die Website zugreifen. Dies weist auf ein Problem bei der Überprüfung der Passwortgültigkeit hin.
Antwort:
Um ein Salted-Passwort zu überprüfen, können wir das eingegebene Passwort nicht direkt mit dem gespeicherten Hash vergleichen. Stattdessen müssen wir:
Beispielcode für mysqli:
$mysqli = new mysqli($dbHost, $dbUser, $dbPassword, $dbName); // Find the stored password hash in the db $sql = 'SELECT password FROM users WHERE username = ?'; $stmt = $mysqli->prepare($sql); $stmt->bind_param('s', $_POST['username']); $stmt->execute(); // Check if user exists and fetch the hash $isPasswordCorrect = false; $stmt->bind_result($hashFromDb); if ($stmt->fetch() === true) { $isPasswordCorrect = password_verify($_POST['password'], $hashFromDb); }
Beispielcode für PDO:
$dsn = "mysql:host=$dbHost;dbname=$dbName;charset=utf8"; $pdo = new PDO($dsn, $dbUser, $dbPassword); // Find the stored password hash in the db $sql = 'SELECT password FROM users WHERE username = ?'; $stmt = $pdo->prepare($sql); $stmt->bindValue(1, $_POST['username'], PDO::PARAM_STR); $stmt->execute(); // Check if user exists and fetch the hash $isPasswordCorrect = false; if (($row = $stmt->fetch(PDO::FETCH_ASSOC)) !== false) { $hashFromDb = $row['password']; $isPasswordCorrect = password_verify($_POST['password'], $hashFromDb); }
Durch Befolgen dieses Prozesses können Sie gesalzene Passwörter effektiv überprüfen Ihre Anmeldeseite, um die Sicherheit Ihrer Mitgliederseite zu gewährleisten.
Das obige ist der detaillierte Inhalt vonWie kann ich gesalzene Passwörter in einem Datenbank-Anmeldesystem sicher überprüfen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!