Un nouveau tutoriel sur les mots de passe vient de sortir sur www.apprendre-php.com. Il traite de comment sécuriser les mots de passe adéquatement. Tout le monde connait et utilise bien sur le hashshage à l’aide de md5 ou sha1. Ce qui a piqué m’a curiosité dans ce tutoriel ce sont les salts.
Qu’est ce que les salts ? Les salts ne sont en fait que des sortes de clés, gardé secrètes du côté de votre application PHP et qui combinés à vos mots de passe renforce la sécurité de ceux ci. Mais pourquoi utiliser les salts alors que les hashs ne sont pas réversibles ? À cause des Tables Arc-en-ciel. Comment ça les table arc-en-ciel me direz-vous ? Vous devez pensez que je débloque complètement là non ?
Ces tables sont en fait des dictionnaires qui nous permettent rapidement de savoir un mot de passe à partir d’un hash. Vous comprennez donc qu’il s’agit d’un jeu d’enfant d’essayer de retrouver le bon mot de passe à partir d’un hash. Voyons donc un exemple:
Créons les salts dans votre fichier de configuration.
// config.inc.php $salt1 = 'Windor!'; $salt2 = 'NosCompliments!';
Comment les utilisons nous:
// index.php // On inclut notre fichier de configuration. require_once('conf/config.inc.php'); // On obtient le hash dans la base de données. $hashDb = getHashDb(); // On construit le hash du mot de passe fournit par l'utilisateur. $hashMdp = md5 ( $salt1 . $mdp . $salt2 ); // On compare les hashs. if( $hashMdp === $hashDb ) { echo 'Mot de passe valide !'; } else { echo 'Mot de passe invalide !'; }
Voilà ! Aussi simple que ça !
Rien ne vous empêche d’ajouter plus de salts ou de combiner plusieurs méthodes de hash dans votre vérification.
par exemple:
$monHash = sha1( md5( $salts1 ) . sha1( $mdp ) . md5( md5( $salts2 ) . md5( $salts3) ) );
Articles connexes:
