Maison >base de données >tutoriel mysql >Pourquoi mon authentification par mot de passe salé renvoie-t-elle toujours vrai ?

Pourquoi mon authentification par mot de passe salé renvoie-t-elle toujours vrai ?

DDD
DDDoriginal
2024-12-11 21:35:11885parcourir

Why is My Salted Password Authentication Always Returning True?

Rétractation des mots de passe salés pour l'authentification

Lors de la mise en œuvre d'un site membre avec des mots de passe salés stockés dans une base de données, le mécanisme de connexion nécessite une attention particulière. Bien que l'utilisation d'une approche de mot de passe salé améliore la sécurité, elle peut également présenter des difficultés dans la vérification des informations d'identification des utilisateurs.

Problème :

Une erreur se produit sur la page de connexion des membres, où tout l'entrée semble réussir le contrôle de vérification de l'existence de l'utilisateur. Plus précisément, l'évaluation de $result === false renvoie toujours false, empêchant le comportement attendu.

Solution :

La cause première du problème réside dans l'approche pour récupérer le hachage du mot de passe de la base de données. Pour vérifier les informations d'identification de l'utilisateur, il faut d'abord récupérer le hachage du mot de passe salé correspondant au nom d'utilisateur fourni :

$saltQuery = "SELECT salt FROM users WHERE name = '$name';";
$result = mysqli_query($connect, $saltQuery);
$row = mysqli_fetch_assoc($result);
$salt = $row['salt'];

Une fois le sel obtenu, il doit être utilisé pour hacher le mot de passe fourni :

$saltedPW = $password.$salt;
$hashedPW = hash('sha256', $saltedPW);

Le mot de passe haché résultant doit ensuite être utilisé pour interroger la base de données sur l'existence de l'utilisateur :

$sqlQuery = "SELECT * FROM users WHERE name = '$name' AND password = '$hashedPW'";

En outre Considérations :

Lors de la vérification des mots de passe, il est crucial d'utiliser des fonctions de hachage de mot de passe solides comme bcrypt ou Argon2, qui fournissent des algorithmes de hachage sécurisés et chronophages. De plus, des instructions préparées doivent être utilisées pour empêcher les attaques par injection SQL.

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