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
Libérer: 2024-12-11 21:35:11
original
973 Les gens l'ont consulté

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'];
Copier après la connexion

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

$saltedPW = $password.$salt;
$hashedPW = hash('sha256', $saltedPW);
Copier après la connexion

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'";
Copier après la connexion

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!

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal