Stocker un mot de passe en PHP grâce à bcrypt [sécurité]

[niveau: intermédiaire]

Il a été démontré que le stockage de mot de passe n’est pas chose aisée, et que l’utilisation d’une méthode de hashage (MD5, SHA-1, etc) n’est pas parfaite, même avec l’utilisation d’un salt. D’après cette constatation plusieurs articles indiquent que la meilleure méthode reste l’utilisation de bcrypt, comme on peut le lire dans How to safely store a password.

L’utilisation de bcrypt est assez simple :
1) Télécharger phpass (fichier .tgz qui contient un fichier PasswordHash.php);
2) Appeler PasswordHash.php dans votre page :

<?php require('includes/PasswordHash.php'); ?>

3) Maintenant vous pouvez utiliser l’objet PasswordHash comme cela :

<?php
$password = $_POST["password"];
$hasher = new PasswordHash(8, FALSE);
$hash = $hasher->HashPassword($password);
?>

Et pour vérifier un mot de passe, vous devez utiliser ce petit bout de code :

<?php // vérification du mot de passe
$password = $_POST["password"];
$password_correct = "password qui vient de la base de données"; /* Le hash stocké précédemment */
$hasher = new PasswordHash(8, FALSE);
$check = $hasher->CheckPassword($password, $password_correct);

if ($check) {
 echo "Password correct!";
}
else {
 echo "Password incorrect...";
}
?>

A noter que si vous souhaitez le rendre compatible avec d’autres systèmes équivalents (comme BCrypt pour Java par exemple), alors il faudra vous assurer que votre machine a bien CRYPT_BLOWFISH d’installé (on peut le voir avec <?php echo CRYPT_BLOWFISH; ?>) afin d’avoir une bonne compatibilité des deux systèmes.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

*