Hachage et sel pour mots de passe en PHP : meilleures pratiques 2025

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Hachage, sel et votre sécurité : pourquoi c'est crucial en 2025 ?

\n\n

Imaginez : vous avez créé un super site, tout fonctionne, les utilisateurs s'inscrivent. Mais un jour, la base de données fuit sur le net. Que verront les attaquants ? Si vous stockez les mots de passe en clair, c'est une catastrophe. Si vous utilisez l'ancien md5, c'est presque pareil. En revanche, si vous appliquez un hachage sécurisé avec sel, ils ne verront qu'un ensemble de caractères sans signification. En 2025, ce n'est plus une simple recommandation, c'est une norme de sécurité.

\n\n

Dans cet article, nous allons voir comment hacher correctement les mots de passe en PHP en utilisant des algorithmes modernes, du sel et les meilleures pratiques. Vous découvrirez pourquoi les anciennes méthodes sont dangereuses et comment passer à un stockage sécurisé des mots de passe en 10 minutes.

\n\n

Pourquoi md5 et sha1 sont-ils dangereux ?

\n\n

De nombreux développeurs débutants commettent la même erreur : utiliser md5($password) ou sha1($password). En 2025, ce n'est pas seulement une mauvaise pratique, c'est une faille de sécurité directe. Pourquoi ?

\n\n
    \n
  • Vitesse de calcul. MD5 et SHA1 sont conçus pour la rapidité, pas pour la sécurité. Les GPU modernes peuvent tester des milliards de hachages par seconde.
  • \n
  • Absence de sel. Si deux utilisateurs choisissent le même mot de passe, leurs hachages seront identiques. Cela permet d'utiliser des tables arc-en-ciel.
  • \n
  • Collisions. Des collisions pratiques ont été trouvées pour MD5 : deux entrées différentes produisent le même hachage.
  • \n
\n\n

Heureusement, PHP dispose de fonctions intégrées qui résolvent tous ces problèmes. Et cela ne nécessite aucune bibliothèque externe.

\n\n

password_hash et password_verify : votre arme secrète

\n\n

Depuis PHP 5.5.0, le langage propose deux fonctions magiques : password_hash() et password_verify(). Elles génèrent automatiquement un sel, utilisent des algorithmes cryptographiquement robustes et protègent contre les attaques temporelles.

\n\n

Exemple d'utilisation simple :

\n\n
// Hachage du mot de passe\n$password = "MonMotDePasseSuperSecurisé!";\n$hash = password_hash($password, PASSWORD_DEFAULT);\necho $hash; // $2y$10$...\n
\n\n

Que s'est-il passé ici ? La fonction password_hash :

\n
    \n
  • A généré un sel aléatoire
  • \n
  • A choisi l'algorithme optimal (par défaut bcrypt)
  • \n
  • A calculé le hachage
  • \n
  • A retourné une chaîne contenant à la fois le hachage, le sel et les informations sur l'algorithme
  • \n
\n\n

La vérification du mot de passe est tout aussi simple :

\n\n
// Vérification du mot de passe\n$inputPassword = "MonMotDePasseSuperSecurisé!";\nif (password_verify($inputPassword, $hash)) {\n    echo "Mot de passe correct !";\n} else {\n    echo "Mot de passe incorrect.";\n}\n
\n\n

Notez bien : vous n'avez pas besoin de stocker le sel séparément. Il est déjà intégré dans le hachage. C'est ce qu'on appelle le hachage sécurisé avec sel en action.

\n\n

Quel algorithme choisir en 2025 ?

\n\n

Par défaut, password_hash utilise bcrypt. C'est un excellent choix pour la plupart des projets. Mais nous avons d'autres options :

\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
AlgorithmeConstanteRecommandation
BcryptPASSWORD_BCRYPTExcellent choix, supporté partout
Argon2iPASSWORD_ARGON2IRésistant aux attaques par canaux auxiliaires
Argon2idPASSWORD_ARGON2IDMeilleur choix en 2025
\n\n

Argon2id est le vainqueur du concours PHC (Password Hashing Competition). Il résiste à la fois aux attaques GPU et aux attaques temporelles. Si votre PHP est compilé avec le support d'Argon2 (ce qui est déjà la norme en PHP 8.x), utilisez-le.

\n\n

Configuration du coût de hachage

\n\n

L'une des idées clés du hachage sécurisé avec sel est de rendre le calcul

Blogs

Book Recommendations