Maison  >  Article  >  développement back-end  >  Comment vérifier un mot de passe utilisateur par rapport à un hachage salé dans une base de données ?

Comment vérifier un mot de passe utilisateur par rapport à un hachage salé dans une base de données ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-13 10:00:04791parcourir

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

Comment vérifier si un mot de passe correspond à un mot de passe salé stocké dans une base de données

Lors de la création d'applications sécurisées, la gestion des mots de passe salés est cruciale. Cependant, il peut être difficile de vérifier efficacement les mots de passe des utilisateurs par rapport aux hachages salés stockés. Cet article vous guidera à travers les étapes nécessaires à la récupération d'un mot de passe salé à partir d'une base de données et à l'authentification de l'utilisateur.

Récupération du mot de passe salé :

L'exemple de code ci-dessous illustre comment récupérer le hachage du mot de passe salé depuis une base de données MySQL en utilisant une connexion mysqli :

<?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'];
?>

Ce code se connecte à la base de données, nettoie l'entrée de l'utilisateur et récupère le sel associé au nom d'utilisateur donné dans la table des utilisateurs. Le sel est essentiel pour vérifier le mot de passe.

Vérification du mot de passe de l'utilisateur :

Une fois le hachage du mot de passe salé récupéré, vous pouvez vérifier si le mot de passe fourni par l'utilisateur correspond il. Le code suivant montre comment procéder à l'aide des fonctions password_hash() et password_verify() :

<?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);
}
?>

Ici, le mot de passe fourni est salé à l'aide du sel récupéré, puis haché à l'aide d'une fonction de hachage sécurisée. Le mot de passe haché est ensuite comparé au mot de passe haché stocké dans la base de données. Si les mots de passe correspondent, l'utilisateur est authentifié.

En suivant ces étapes, vous pouvez efficacement récupérer un mot de passe salé à partir d'une base de données et vérifier le mot de passe de l'utilisateur sans exposer le mot de passe réel. Cette approche garantit la sécurité des identifiants des utilisateurs tout en fournissant une authentification efficace et sécurisée.

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