Heim >Datenbank >MySQL-Tutorial >Wie verifiziert man Benutzerkennwörter sicher mit der Funktion „password_verify' von PHP?

Wie verifiziert man Benutzerkennwörter sicher mit der Funktion „password_verify' von PHP?

DDD
DDDOriginal
2024-10-28 11:16:01491Durchsuche

How to Verify User Passwords Securely with PHP's password_verify Function?

Verschlüsselte Passwörter mit PHP entschlüsseln

Viele Anwendungen speichern Benutzerpasswörter sicher mithilfe von Verschlüsselungsalgorithmen wie „password_hash“. Bei der Validierung von Anmeldeversuchen ist es jedoch wichtig, das eingegebene Passwort mit der verschlüsselten, gespeicherten Version zu vergleichen.

Das Problem der Verschlüsselung

password_hash verwendet Bcrypt, ein ein- Way-Hashing-Algorithmus, was bedeutet, dass das verschlüsselte Passwort nicht rückgängig gemacht oder entschlüsselt werden kann. Hierbei handelt es sich um eine Sicherheitsfunktion, die sicherstellt, dass Angreifer selbst bei einer Kompromittierung der Datenbank nicht auf Klartext-Passwörter zugreifen können.

Die Lösung: Passwortüberprüfung

Zur Validierung von Benutzerpasswörtern , verwenden Sie die Funktion „password_verify“:

<code class="php">if (password_verify('input_password', $encrypted_password)) {
    // Password matches!
} else {
    // Invalid password.
}</code>

Diese Funktion vergleicht das eingegebene Passwort mit der verschlüsselten Version und gibt „true“ zurück, wenn sie übereinstimmen.

Ändern Ihrer SQL-Abfrage

Anstatt das eingegebene Passwort in die SQL-Abfrage einzuschließen, verwenden Sie die Parametrisierung:

<code class="php">$sql_script = 'SELECT * FROM USERS WHERE username=?';</code>

Dies schützt vor SQL-Injection-Angriffen, indem verhindert wird, dass böswillige Benutzer Ihre Abfrage manipulieren.

Beispiel

Hier ist ein Beispiel für die Verwendung von „password_verify“:

<code class="php">$username = $_POST['username'];
$input_password = $_POST['password'];

$sql_script = 'SELECT * FROM USERS WHERE username=?';

if ($result = $conn->query($sql_script, $username)) {
    if ($user = $result->fetch_assoc()) {
        if (password_verify($input_password, $user['password'])) {
            // Login successful!
        } else {
            // Invalid password.
        }
    } else {
        // User not found.
    }
}</code>

Das obige ist der detaillierte Inhalt vonWie verifiziert man Benutzerkennwörter sicher mit der Funktion „password_verify' von PHP?. 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