Maison > développement back-end > tutoriel php > 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
Libérer: 2024-11-13 10:00:04
original
848 Les gens l'ont consulté

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é à partir d'une base de données MySQL à l'aide d'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'];
?>
Copier après la connexion

Ce code se connecte à la base de données, nettoie les entrées 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);
}
?>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal