Hachage de mot de passe en PHP
Stocker un mot de passe en clair est incorrect. Un pirate malveillant pourrait obtenir l'accès à votre base de données et voler les mots de passe.
C'est pourquoi généralement l'identifiant est stocké en clair,
et le mot de passe est haché par une fonction spéciale
md5, qui prend le mot de passe en paramètre
et retourne son hachage, à partir duquel
il est impossible de retrouver le mot de passe original.
Par exemple, trouvons le hachage d'une chaîne de caractères :
<?php
echo md5('12345'); // affichera '827ccb0eea8a706c4c34a16891f84e7b'
?>
Maintenant, nous devons modifier notre processus d'inscription et notre processus d'authentification. Pour commencer, je conseillerais de vider la table des utilisateurs, car pour le moment les mots de passe y sont stockés en clair, alors qu'ils devraient être stockés sous forme de hachages. Ensuite, lors des tests d'inscription, la table se remplira avec les données dans le nouveau format.
Corrigeons maintenant notre inscription afin que lors de la sauvegarde d'un nouvel utilisateur dans la base, ce ne soit pas le mot de passe qui soit ajouté, mais son hachage.
La modification décrite ressemblera à quelque chose comme ceci :
<?php
$login = $_POST['login'];
$password = md5($_POST['password']); // transforme le mot de passe en son hachage
$query = "INSERT INTO users SET login='$login', password='$password'";
?>
Apportons des modifications similaires à l'authentification :
<?php
$login = $_POST['login'];
$password = md5($_POST['password']); // transforme le mot de passe en son hachage
$query = "SELECT * FROM users WHERE login='$login' AND password='$password'";
?>
Apportez les modifications à l'inscription en prenant en compte le hachage, enregistrez quelques nouveaux utilisateurs, assurez-vous qu'ils ont bien été ajoutés à la base de données avec des mots de passe hachés.
Apportez les modifications à l'authentification en prenant en compte le hachage, essayez de vous connecter avec les utilisateurs préalablement enregistrés.