Maison >développement back-end >tutoriel php >Comment vérifier les connexions des utilisateurs avec des mots de passe salés dans les bases de données ?

Comment vérifier les connexions des utilisateurs avec des mots de passe salés dans les bases de données ?

DDD
DDDoriginal
2024-11-13 13:17:02968parcourir

How Can You Verify User Logins with Salted Passwords in Databases?

Retrait du mot de passe salé de la base de données et authentification des utilisateurs

Dans le domaine de la sécurité des mots de passe, l'utilisation de mots de passe salés est primordiale. Lorsqu'un mot de passe est haché avec un sel unique, il devient exponentiellement plus difficile pour les attaquants de déchiffrer et d'accéder aux données utilisateur sensibles.

L'énigme de la vérification

De nombreux développeurs sont confrontés à des défis dans la vérification des connexions des utilisateurs avec des mots de passe salés stockés dans des bases de données. Traditionnellement, les développeurs peuvent tenter de vérifier le mot de passe saisi directement par rapport au hachage salé stocké à l'aide de requêtes SQL. Cependant, cette approche n'est pas viable car les hachages salés sont uniques et ne peuvent pas être comparés directement.

La solution : les fonctions de vérification des mots de passe

Pour résoudre ce problème, la programmation moderne les langages et les frameworks fournissent des fonctions intégrées pour gérer la vérification des mots de passe. Ces fonctions prennent le mot de passe saisi et le comparent au hachage salé stocké, garantissant ainsi que le mot de passe fourni est correct.

Vérification étape par étape à l'aide de MySQLi

Envisagez l'extrait de code suivant qui illustre le processus de vérification de la connexion d'un utilisateur à l'aide de mots de passe salés dans MySQLi :

$mysqli = new mysqli($dbHost, $dbUser, $dbPassword, $dbName);
$mysqli->set_charset('utf8');

$sql = 'SELECT password FROM users WHERE username = ?';
$stmt = $mysqli->prepare($sql);
$stmt->bind_param('s', $_POST['username']);
$stmt->execute();

$isPasswordCorrect = false;
$stmt->bind_result($hashFromDb);
if ($stmt->fetch() === true)
{
  $isPasswordCorrect = password_verify($_POST['password'], $hashFromDb);
}
  1. Instructions préparées : Pour éviter les vulnérabilités d'injection SQL, des instructions préparées sont utilisées pour nettoyer les entrées de l'utilisateur.
  2. Récupération du Hash salé : La base de données est interrogée pour récupérer le hachage de mot de passe salé associé au mot de passe fourni nom d'utilisateur.
  3. Vérification du mot de passe : La fonction password_verify() compare le mot de passe saisi avec le hachage salé stocké, renvoyant vrai s'ils correspondent.

En implémentant ceci approche, vous pouvez protéger efficacement les mots de passe de vos utilisateurs et empêcher tout accès non autorisé aux informations critiques.

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