Programmation Web Avancée

Blogue

Les cours

Gérer des mots de passe de façon sécuritaire sous PHP


Rédigé par , le
Selon php.net, la bonne méthode pour hasher les mots de passe est en utilisant l'algorithme Brcypt (basé sur Blowfish). Contrairement à md5 et sha1, cet algorithme est plus lent à l'exécution, ce qui rend le brute force attack moins facile.

<?php

 // Si vous avez PHP 5.4 ou moins, vous devez aller 
 // chercher ce fichier sur GitHub et l'inclure à votre page
 // (Source : https://github.com/ircmaxell/password_compat)
 require("password.php");


 // Génération du grain de sel et du hash.
 // Celui-ci est de 60 caractères, mais PHP conseille
 // de le sauvegarder dans une colonne (de BD) avec une taille de 255.
 $hash = password_hash("mon-password", PASSWORD_DEFAULT);


 // Pour vérifier le mot de passe lors d'une connexion...
 if (password_verify('mon-password', $hash)) {
     echo 'Mot de passe valide, vous avez accès!';
 } else {
     echo 'Erreur : Mot de passe invalide...';
 }

?>
Concernant le hash...
Le grain de sel et le coût de calcul sont automatiquement liés au hash, ce qui permet à la fonction password_verify de le comparer à une autre chaîne.
 
Voici un exemple de hash :
$2y$10$keSaVUjmaPICe8iWwVngEurSzsc/BOFORua/05D32bV/oNjk46mU6
Ce hash contient les informations : $2y$10$, ce qui signifie qu'il a été utilisé avec l'algorithme dont l'identifiant est  $2y$ et avec un coût de calculation de "10". Les quelques caractères qui suivent est le grain de sel, et le reste est le mot de passe hashé.

Pour plus d'informations sur le hashing de mots de passe sous PHP...
http://www.php.net/manual/fr/faq.passwords.php
 

 
Les commentaires sur cet article
Par : Anonyme
2014-02-28 10:54:31

intéressant !

Par : David
2014-04-03 13:29:01

Génial! Dorénavant, je vais utiliser cette méthode.

Ajouter votre commentaire
(facultatif)
(facultatif et non divulgé)
Captcha image
Prenez le nombre affiché et faites moins 1.
 
Blog  

Les articles


Pour envoyer une demande d'assistance à l'enseignant, cliquez ici