Heim >Backend-Entwicklung >PHP-Tutorial >Wie verifiziert man ein Benutzerkennwort anhand eines Salted Hash in einer Datenbank?

Wie verifiziert man ein Benutzerkennwort anhand eines Salted Hash in einer Datenbank?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-13 10:00:04856Durchsuche

How to Verify a User Password Against a Salted Hash in a Database?

So prüfen Sie, ob ein Passwort mit einem in einer Datenbank gespeicherten Salted-Passwort übereinstimmt

Beim Erstellen sicherer Anwendungen ist der Umgang mit Salted-Passwörtern von entscheidender Bedeutung. Es kann jedoch schwierig sein, Benutzerkennwörter effektiv anhand gespeicherter Salted-Hashes zu überprüfen. Dieser Artikel führt Sie durch die Schritte zum Abrufen eines Salted-Passworts aus einer Datenbank und zur Authentifizierung des Benutzers.

Abrufen des Salted-Passworts:

Der folgende Beispielcode zeigt dies So rufen Sie den gesalzenen Passwort-Hash aus einer MySQL-Datenbank mithilfe einer MySQL-Verbindung ab:

<?php
$servername = 'localhost';
$username = 'root';
$pwd = '';
$dbname = 'lp001';

$connect = new mysqli($servername,$username,$pwd,$dbname);

if ($connect->connect_error){
    die('connection failed, reason: '.$connect->connect_error);
}

$name = mysqli_real_escape_string($connect, $_POST['name']);
$saltQuery = "SELECT salt FROM users WHERE name = '$name';";
$result = mysqli_query($connect, $saltQuery);
if ($result === false){
    die(mysqli_error());
}

$row = mysqli_fetch_assoc($result);
$salt = $row['salt'];
?>

Dieser Code stellt eine Verbindung zur Datenbank her, bereinigt die Benutzereingaben und ruft den mit dem angegebenen Benutzernamen verknüpften Salt aus der Benutzertabelle ab . Der Salt ist für die Verifizierung des Passworts unerlässlich.

Verifizierung des Benutzerpassworts:

Sobald der Salted-Passwort-Hash abgerufen wurde, können Sie überprüfen, ob das vom Benutzer bereitgestellte Passwort übereinstimmt Es. Der folgende Code zeigt, wie das mit den Funktionen „password_hash()“ und „password_verify()“ geht:

<?php
$password = mysqli_real_escape_string($connect, $_POST['password']);
$saltedPW = $password.$salt;
$hashedPW = hash('sha256', $saltedPW);

$sqlQuery = "SELECT * FROM users WHERE name = '$name' AND password = '$hashedPW'";

if (mysqli_query($connect, $sqlQuery)){
    echo '<h1>Welcome to the member site '.$name.'</h1>';
}else{
    echo 'error adding the query: '.$sql_q.'<br> Reason: '.mysqli_error($connect);
}
?>

Hier wird das bereitgestellte Passwort mit dem abgerufenen Salt gesalted und dann mit einer sicheren Hash-Funktion gehasht. Das gehashte Passwort wird dann mit dem in der Datenbank gespeicherten gehashten Passwort verglichen. Wenn die Passwörter übereinstimmen, wird der Benutzer authentifiziert.

Durch Befolgen dieser Schritte können Sie effektiv ein Salted-Passwort aus einer Datenbank abrufen und das Passwort des Benutzers überprüfen, ohne das tatsächliche Passwort preiszugeben. Dieser Ansatz gewährleistet die Sicherheit der Benutzeranmeldeinformationen und bietet gleichzeitig eine effiziente und sichere Authentifizierung.

Das obige ist der detaillierte Inhalt vonWie verifiziert man ein Benutzerkennwort anhand eines Salted Hash in einer Datenbank?. 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