Maison >base de données >tutoriel mysql >Comment vérifier en toute sécurité les mots de passe salés dans un système de connexion à une base de données ?
Vérification des mots de passe salés dans la connexion à la base de données
Lors du développement d'un site d'adhésion, la sécurisation des informations de connexion est cruciale. Un aspect essentiel est la mise en œuvre de mots de passe salés, qui améliorent la protection des mots de passe en ajoutant une chaîne aléatoire au mot de passe avant de le hacher.
Problème :
Dans le code fourni, le une erreur dans la page de connexion permet à tout membre d'accéder au site malgré la saisie d'un mot de passe incorrect. Cela indique un problème avec la vérification de la validité du mot de passe.
Réponse :
Pour vérifier un mot de passe salé, nous ne pouvons pas comparer directement le mot de passe saisi au hachage stocké. Au lieu de cela, nous devons :
Exemple de code pour mysqli :
$mysqli = new mysqli($dbHost, $dbUser, $dbPassword, $dbName); // Find the stored password hash in the db $sql = 'SELECT password FROM users WHERE username = ?'; $stmt = $mysqli->prepare($sql); $stmt->bind_param('s', $_POST['username']); $stmt->execute(); // Check if user exists and fetch the hash $isPasswordCorrect = false; $stmt->bind_result($hashFromDb); if ($stmt->fetch() === true) { $isPasswordCorrect = password_verify($_POST['password'], $hashFromDb); }
Exemple de code pour AOP :
$dsn = "mysql:host=$dbHost;dbname=$dbName;charset=utf8"; $pdo = new PDO($dsn, $dbUser, $dbPassword); // Find the stored password hash in the db $sql = 'SELECT password FROM users WHERE username = ?'; $stmt = $pdo->prepare($sql); $stmt->bindValue(1, $_POST['username'], PDO::PARAM_STR); $stmt->execute(); // Check if user exists and fetch the hash $isPasswordCorrect = false; if (($row = $stmt->fetch(PDO::FETCH_ASSOC)) !== false) { $hashFromDb = $row['password']; $isPasswordCorrect = password_verify($_POST['password'], $hashFromDb); }
En suivant ce processus, vous pouvez vérifier efficacement les mots de passe salés dans votre page de connexion, assurant la sécurité de votre site membre.
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!