Bonne pratique pour les mots de passe: password_hash et password_verify
Un mot de passe ne devrait jamais se trouver dans une base de données, ou dans quelconque autre format de stockage de données.
Si la base de données est compromise, l'attaquant obtient immédiatement tous les mots de passe des utilisateurs !
Il faut que le mot de passe soit haché!
Ne pas confondre cryptage et hachage
Bien que les termes soient souvent confondus dans le langage courant, le hachage et le chiffrement (le terme rigoureux en français pour "cryptage") répondent à des problématiques de sécurité fondamentalement différentes
Hachage
Le hachage transforme une donnée de taille variable (une chaîne de caractères, un fichier) en une empreinte numérique de taille fixe (le hash). C'est une fonction mathématique irréversible : il est mathématiquement impossible de retrouver la donnée d'origine à partir du hash.
Cryptage
Nommé également Le Chiffrement (Encryption).
Le chiffrement sert à garantir la confidentialité. Il transforme une donnée lisible (le texte clair) en un format illisible (le texte chiffré). Contrairement au hachage, cette opération est réversible : on peut retrouver la donnée d'origine, à condition de posséder la bonne clé cryptographique.
Hacher les mots de passe en PHP, un jeu d'enfant, mais des règles à respecter!
Mauvaises pratiques
Une solution naïve consiste à utiliser une fonction de hachage classique :
Cependant, ces algorithmes sont aujourd'hui considérés comme insuffisants pour protéger des mots de passe.
Ils sont :
- Trop rapides.
- Vulnérables aux attaques par dictionnaire.
- Vulnérables aux tables arc-en-ciel (Rainbow Tables).
- Conçus pour l'intégrité des données et non pour le stockage des mots de passe.
Ici la suitr | Lá |