Maison >base de données >tutoriel mysql >Comment vérifier les mots de passe des utilisateurs en toute sécurité avec la fonction password_verify de PHP ?

Comment vérifier les mots de passe des utilisateurs en toute sécurité avec la fonction password_verify de PHP ?

DDD
DDDoriginal
2024-10-28 11:16:01483parcourir

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

Déchiffrement des mots de passe cryptés avec PHP

De nombreuses applications stockent les mots de passe des utilisateurs en toute sécurité à l'aide d'algorithmes de cryptage comme password_hash. Cependant, lors de la validation des tentatives de connexion, il est important de comparer le mot de passe saisi avec la version cryptée et stockée.

Le problème du cryptage

password_hash utilise Bcrypt, un manière algorithme de hachage, ce qui signifie que le mot de passe crypté ne peut pas être inversé ou déchiffré. Il s'agit d'une fonctionnalité de sécurité qui garantit que même si la base de données est compromise, les attaquants ne peuvent pas accéder aux mots de passe en texte brut.

La solution : vérification du mot de passe

Pour valider les mots de passe des utilisateurs , utilisez la fonction password_verify :

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

Cette fonction compare le mot de passe saisi à la version cryptée et renvoie vrai s'ils correspondent.

Modification de votre requête SQL

Au lieu d'inclure le mot de passe d'entrée dans la requête SQL, utilisez le paramétrage :

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

Cela protège contre les attaques par injection SQL en empêchant les utilisateurs malveillants de manipuler votre requête.

Exemple

Voici un exemple d'utilisation de 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>

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn