Déchiffrer les hachages de mots de passe en PHP : impossible avec Bcrypt
L'un des concepts fondamentaux de la cryptographie est la nature irréversible des fonctions de hachage. Bcrypt, l'algorithme sous-jacent utilisé par la fonction password_hash() de PHP, entre dans cette catégorie. Une fois qu'un mot de passe est haché, il devient impossible de récupérer sa valeur d'origine.
Comprendre la vérification du mot de passe
Plutôt que de déchiffrer un hachage, une approche plus sécurisée pour authentifier les utilisateurs est vérification du mot de passe. Cela implique de comparer le mot de passe saisi par un utilisateur avec son hachage stocké. PHP fournit la fonction password_verify() spécifiquement à cet effet.
Exemple de code pour la vérification du mot de passe
<code class="php">$hash = 'y$BCryptRequires22Chrcte/VlQH0piJtjXl.0t1XkA8pw9dMXTpOq'; if (password_verify('rasmuslerdorf', $hash)) { echo 'Password is valid!'; } else { echo 'Invalid password.'; }</code>
Requête SQL modifiée
Puisque nous vérifions maintenant les mots de passe en PHP, la requête SQL pour récupérer les données utilisateur ne doit inclure que le nom d'utilisateur :
<code class="sql">$sql_script = 'SELECT * FROM USERS WHERE username=?';</code>
Protection contre les injections SQL
L'exemple de requête SQL est sensible aux attaques par injection SQL. Pour atténuer ce risque, paramétrez l'entrée à l'aide d'instructions préparées ou de requêtes paramétrées.
Conclusion
Le hachage des mots de passe avec Bcrypt garantit leur sécurité, mais cela signifie également qu'il n'y a aucun moyen pour les décrypter. Utilisez plutôt la vérification du mot de passe pour authentifier les utilisateurs en comparant leurs mots de passe saisis avec les hachages stockés. De plus, protégez toujours vos requêtes SQL contre les attaques par injection en utilisant un paramétrage d'entrée approprié.
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!