Un site ne doit jamais conserver les mots de passe en clair : il garde seulement leur empreinte, calculée par une fonction à sens unique. À la connexion, il recalcule l’empreinte du mot de passe saisi et compare. Sans sel, ce procédé a un défaut majeur : deux personnes qui ont choisi le même mot de passe obtiennent exactement la même empreinte, et un attaquant peut préparer à l’avance des tables d’empreintes des mots de passe les plus courants. Le sel règle ces deux problèmes.
Comment fonctionne le salage
Au moment de l’inscription ou d’un changement de mot de passe, le site tire au hasard une chaîne unique, le sel, et l’ajoute au mot de passe avant de calculer l’empreinte. Le sel est stocké avec l’empreinte, en clair : il n’a pas besoin d’être secret. Son rôle est de rendre chaque calcul unique.

- Les tables précalculées deviennent inutiles : l’attaquant devrait les recalculer pour chaque sel.
- Les mots de passe identiques ne se voient plus dans une base volée.
- Chaque compte doit être attaqué séparément, ce qui multiplie le travail d’une attaque hors ligne.
Le sel ne rend pas un mot de passe faible solide pour autant : « Soleil2024 » reste parmi les premiers essais d’une attaque par force brute. C’est pourquoi on l’associe à une fonction volontairement lente, comme bcrypt, scrypt ou Argon2, qui intègrent le sel automatiquement.
Sel, poivre et recommandations
OWASP distingue le sel, unique pour chaque mot de passe et stocké avec lui, du poivre (pepper), un secret commun conservé hors de la base de données, par exemple dans un coffre de secrets. Le poivre ajoute une défense en profondeur si seule la base fuit. En France, la recommandation de la CNIL sur les mots de passe (délibération du 21 juillet 2022) demande de ne jamais les stocker en clair et de les transformer par une fonction cryptographique non réversible et sûre, intégrant un sel ou une clé.
Pour WordPress
Dans WordPress, le mot « sel » désigne deux choses qu’il ne faut pas confondre.
Le sel des mots de passe
Depuis WordPress 6.8, les mots de passe des utilisateurs sont hachés avec bcrypt par la fonction PHP password_hash(), qui génère un sel aléatoire pour chaque mot de passe et le range dans l’empreinte elle-même. Vous n’avez rien à régler : le salage est automatique.
Les clés et sels de wp-config.php
Le fichier wp-config.php contient huit constantes : AUTH_KEY, SECURE_AUTH_KEY, LOGGED_IN_KEY, NONCE_KEY et leurs pendants AUTH_SALT, SECURE_AUTH_SALT, LOGGED_IN_SALT, NONCE_SALT. Malgré leur nom, ces valeurs ressemblent davantage à un poivre : elles sont secrètes et servent à signer les cookies de connexion et les nonces. Si elles fuient, quelqu’un peut tenter de forger des cookies valides.
- Générez-les avec le service officiel
api.wordpress.org/secret-key/1.1/salt/ou la commandewp config shuffle-saltsde WP-CLI. - Changez-les après une intrusion : tous les cookies existants deviennent invalides et chaque utilisateur doit se reconnecter.
- Ne les copiez pas d’un site à l’autre et ne les publiez jamais dans un dépôt de code.
Notre article sur les réglages de sécurité de wp-config.php détaille ces constantes et les autres options utiles. Pour l’autre versant du problème, les mots de passe réutilisés d’un site à l’autre, voyez les fuites de mots de passe et leurs parades : un sel ne protège pas un mot de passe déjà connu de l’attaquant, d’où l’intérêt du credential stuffing pour les pirates.