Stockage sécurisé des mots de passe
Hacher les mots de passe avec password_hash et les vérifier avec password_verify.
Stockage sécurisé des mots de passe est une leçon PHP Academy gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage PHP Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours PHP Academy comprend 4 leçons au total.
Ne stockez jamais les mots de passe en clair
Stocker les mots de passe en clair signifie qu’une fuite de la base de données expose le mot de passe de chaque utilisateur. Stockez toujours un hachage cryptographique, idéalement avec bcrypt, Argon2id ou scrypt.
password_hash()
La fonction intégrée password_hash() de PHP crée un hachage sécurisé avec un sel aléatoire inclus dans le résultat.
<?php
$hash = password_hash("mysecretpassword", PASSWORD_BCRYPT);
// Output: $2y$10$... (includes algorithm, cost, salt, hash)password_verify()
Vérifiez un mot de passe en clair par rapport à un hachage stocké.
<?php
$hash = "$2y$10$abcdef...";
$valid = password_verify("mysecretpassword", $hash);
if ($valid) {
echo "Correct password!";
}Options d’algorithme
PHP prend en charge :
PASSWORD_BCRYPT— largement pris en charge, limite de 72 octetsPASSWORD_ARGON2I— exigeant en mémoire (PHP 7.2+)PASSWORD_ARGON2ID— recommandé, résiste aux attaques exploitant le GPU (PHP 7.3+)PASSWORD_DEFAULT— actuellement bcrypt, peut changer dans les futures versions de PHP
Facteur de coût
Le facteur de coût détermine la durée du calcul du hachage. Un coût plus élevé ralentit les attaques par force brute. Le coût bcrypt par défaut est de 10.
<?php
$hash = password_hash("secret", PASSWORD_BCRYPT, ["cost" => 12]);
// Cost 12 takes ~0.5s on typical hardware — acceptable for loginpassword_needs_rehash()
Après une mise à niveau de PHP ou une modification des paramètres de coût, vérifiez si les hachages existants doivent être mis à niveau.
<?php
if (password_verify($plain, $storedHash) &&
password_needs_rehash($storedHash, PASSWORD_DEFAULT)) {
$user->update(["password" => password_hash($plain, PASSWORD_DEFAULT)]);
}Façade Hash de Laravel
Laravel encapsule password_hash dans la façade Hash, avec bcrypt comme valeur par défaut.
<?php
use Illuminate\Support\Facades\Hash;
$hash = Hash::make("mysecretpassword");
$valid = Hash::check("mysecretpassword", $hash); // trueArgon2 dans Laravel
Configurez Laravel pour utiliser Argon2id dans config/hashing.php.
// config/hashing.php
"driver" => "argon2id",Gestion du sel
Les fonctions modernes de hachage de PHP intègrent automatiquement un sel aléatoire d’origine cryptographique. N’implémentez jamais votre propre salage : il est facile de se tromper.
Secret supplémentaire au niveau de l’application
Un secret supplémentaire facultatif, stocké en dehors de la base de données, peut être mélangé aux données avant le hachage. Même si la base de données est dérobée, l’attaquant ne peut pas effectuer une attaque par force brute sans ce secret.
Comparaison résistante aux attaques temporelles
password_verify() utilise en interne une comparaison en temps constant, ce qui empêche les attaques temporelles. Ne comparez jamais les hachages avec ==.
Résumé
Utilisez password_hash() avec PASSWORD_DEFAULT ou PASSWORD_ARGON2ID. Vérifiez avec password_verify(). Recalculez le hachage à la connexion si nécessaire. Ne stockez jamais de mots de passe en clair et n’utilisez jamais MD5/SHA1 pour les mots de passe.
Vérification rapide
Quelle fonction vérifie un mot de passe par rapport à un hachage généré par PHP ?
Questions Fréquemment Posées
La leçon « Stockage sécurisé des mots de passe » est-elle gratuite ?
Oui — le texte complet de « Stockage sécurisé des mots de passe » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours PHP Academy, passe à CoddyKit PRO. Le cours PHP Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Stockage sécurisé des mots de passe » ?
Hacher les mots de passe avec password_hash et les vérifier avec password_verify. Tu pratiques PHP Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer PHP Academy ?
Aucune expérience préalable n'est requise. PHP Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.
Combien de temps prend la leçon « Stockage sécurisé des mots de passe » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon PHP Academy ?
Oui. Chaque leçon PHP Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Prévenir les attaques par script intersite (XSS)
- Injection SQL et requêtes paramétrées
- Protection contre les attaques CSRF
- Stockage sécurisé des mots de passe