Maison > développement back-end > tutoriel php > Dois-je nettoyer les mots de passe des utilisateurs avant de les hacher ?

Dois-je nettoyer les mots de passe des utilisateurs avant de les hacher ?

DDD
Libérer: 2024-12-31 04:27:08
original
266 Les gens l'ont consulté

Should I Cleanse User Passwords Before Hashing Them?

Nettoyage des mots de passe des utilisateurs

Lors du développement d'applications sécurisées, les développeurs envisagent souvent de nettoyer les mots de passe fournis par les utilisateurs avant de les stocker cryptés. Cependant, l'application de mécanismes de nettoyage des mots de passe avant le hachage présente certaines complications.

Évitez de nettoyer les mots de passe avant le hachage

Il est primordial de s'abstenir de nettoyer les mots de passe à l'aide de fonctions telles que escape_string( ), htmlspecialchars() ou addlashes(). La principale raison en est qu'un tel prétraitement est redondant et inutile.

Les hachages générés par la fonction password_hash() de PHP, qui est couramment utilisée pour le stockage des mots de passe, ne posent pas de menaces d'injection SQL. Le processus de hachage convertit le mot de passe en un hachage qui ne peut pas être exploité par injection SQL.

Les hachages offrent une sécurité sans nettoyage

Les fonctions de hachage n'attribuent pas de signification particulière à des caractères spécifiques. ; par conséquent, aucun nettoyage n’est requis pour des raisons de sécurité. En permettant aux utilisateurs de spécifier le mot de passe de leur choix, y compris les espaces et les caractères spéciaux, le hachage garantit la sécurité du mot de passe, quel que soit son contenu.

Considérations sur le stockage

Alors que la valeur par défaut La méthode de hachage (PASSWORD_BCRYPT) génère un hachage de 60 caractères de large, il est recommandé d'allouer plus d'espace pour le stockage, comme VARCHAR(255) ou TEXT, pour s'adapter aux changements potentiels futurs des algorithmes de hachage.

Exemple d'inefficacité du nettoyage

Considérez le mot de passe "Je suis une" garniture de dessert " & a !". L'application de diverses méthodes de nettoyage donne des résultats différents :

  • trim() supprime les espaces de fin
  • htmlentities() et htmlspecialchars() encodent les caractères spéciaux et les guillemets doubles
  • addslashes( ) ajoute des caractères d'échappement
  • strip_tags() supprime le HTML tags

Cependant, ces transformations n'ont aucun impact sur la sécurité du mot de passe haché. password_verify() ne réussira que si la même méthode de nettoyage est appliquée à la fois au mot de passe fourni et à l'équivalent haché récupéré de la base de données.

Conclusion

En conclusion, évitez nettoyer les mots de passe avant de les hacher avec password_hash(). Cela est inutile et introduit des complexités. Fiez-vous plutôt à la sécurité fournie par les algorithmes de hachage et tenez compte de leurs besoins potentiels en matière de stockage.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal