Heim > Datenbank > MySQL-Tutorial > Wie kann ich gesalzene Passwörter in einem Datenbank-Anmeldesystem sicher überprüfen?

Wie kann ich gesalzene Passwörter in einem Datenbank-Anmeldesystem sicher überprüfen?

Barbara Streisand
Freigeben: 2024-12-17 08:45:25
Original
647 Leute haben es durchsucht

How Do I Securely Verify Salted Passwords in a Database Login System?

Ü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:

  • Den Passwort-Hash mithilfe einer Suche nach Benutzernamen aus der Datenbank abrufen.
  • Verwenden Sie die Funktion „password_verify()“, um das eingegebene Passwort mit dem abgerufenen Hash zu vergleichen. Diese Funktion extrahiert den Salz- und Kostenfaktor aus dem Hash für den Vergleich.

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);
}
Nach dem Login kopieren

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);
}
Nach dem Login kopieren

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!

Quelle:php.cn
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