Stocker un mot de passe en clair en base de données revient à laisser toutes les clés sous le paillasson : en cas de fuite, chaque compte est immédiatement compromis. Le hachage transforme le mot de passe en une empreinte à sens unique, calculable dans un sens mais pas dans l’autre, si bien que même en cas de vol de la base, retrouver le mot de passe original reste, en théorie, impossible.
Fonctionnement dans WordPress
Depuis la version 6.8, WordPress utilise l’algorithme bcrypt via les fonctions natives password_hash() et password_verify() de PHP ; les versions antérieures s’appuyaient sur une variante maison de MD5 salé, la fonction wp_hash_password() assurant la compatibilité de vérification entre les deux méthodes.
Exemple
$empreinte = password_hash($motDePasse, PASSWORD_BCRYPT);
// ... stockage de $empreinte en base ...
if (password_verify($motDePasseSaisi, $empreinte)) {
// connexion valide
}
Pièges fréquents
Un mot de passe haché deux fois avec le même algorithme et sans « sel » (une valeur aléatoire ajoutée avant le hachage) devient vulnérable aux tables précalculées, dites tables arc-en-ciel ; password_hash() gère heureusement ce salage automatiquement, sans intervention du développeur. Ne confondez jamais hachage et chiffrement : un mot de passe ne doit jamais être réversible, contrairement à une donnée chiffrée qu’on doit pouvoir retrouver en clair. Réimplémenter soi-même un algorithme de hachage plutôt que d’utiliser les fonctions natives de PHP reste une source fréquente de failles dans les extensions moins rigoureuses.