Qu’est-ce que le hachage
Le hachage (hashing) est le processus qui transforme des données en clair, comme un mot de passe, en une chaîne de longueur fixe via une conversion à sens unique. La même entrée produit toujours le même hachage, mais il est impossible de reconstituer le texte clair à partir d’un hachage. La façadeHash de Laravel prend en charge les algorithmes bcrypt et Argon2 pour stocker les mots de passe en toute sécurité.
Comparaison des algorithmes
Le « work factor » de bcrypt contrôle le temps de calcul du hachage. Plus le hachage est lent, plus il résiste aux attaques par force brute. À mesure que le matériel s’améliore, augmentez le work factor pour maintenir la sécurité.
Flux de hachage et vérification
Configuration
Par défaut, Laravel utilise le driverbcrypt. Modifiez-le via la variable d’environnement HASH_DRIVER.
config:publish.
config/hashing.php.
Utilisation de base
Hacher un mot de passe
Passez le mot de passe en clair àHash::make() pour obtenir un hachage. Stockez cette valeur en base de données.
Ajuster le work factor de bcrypt
L’optionrounds ajuste le coût de calcul. Une valeur élevée est plus sûre, mais plus lente.
La valeur par défaut (12) convient à la plupart des applications.
Ajuster le work factor d’Argon2
Avec Argon2, ajustez le coût viamemory, time et threads.
Vérification du mot de passe
Hash::check() permet de vérifier qu’un mot de passe en clair correspond à un hachage stocké.
Exemple typique lors du processus de connexion.
Auth::attempt(), cette vérification est automatique et vous n’avez pas besoin de l’appeler directement.
Hash::check() est utile lorsque vous devez vérifier manuellement le mot de passe courant.
Détermination du besoin de re-hachage
Hash::needsRehash() indique si le work factor utilisé lors de la génération du hachage diffère de la configuration actuelle.
Cela sert à mettre à jour les hachages existants après un changement de work factor.
Vérification de l’algorithme de hachage
Par défaut,Hash::check() vérifie que le hachage a été généré avec l’algorithme actuellement configuré.
Si l’algorithme diffère, une RuntimeException est lancée.
Cela protège contre des attaques par altération de l’algorithme.
Si vous devez prendre en charge plusieurs algorithmes simultanément (migration en cours), vous pouvez désactiver cette vérification en réglant HASH_VERIFY sur false.
Récapitulatif
Prochaines étapes
Introduction à l'authentification
Découvrez la vue d’ensemble de l’authentification, notamment l’implémentation de la connexion avec
Hash::check().