recherche
Maisondéveloppement back-endtutoriel phpHachage des mots de passe avec l'API de hachage de mot de passe PHP 5.5

Hashing Passwords with the PHP 5.5 Password Hashing API

Points de base

  • PHP 5.5 Mot de passe L'API Hash Simplifie le hachage des mots de passe avec quatre fonctions: password_hash() pour le hachage des mots de passe, password_verify() pour vérifier les mots de passe avec leurs valeurs de hachage, password_needs_rehash() pour vérifier si les mots de passe doivent être réplamés, password_get_info() Utilisé pour retourner le nom de l'algorithme de hachage et diverses options utilisées dans le processus de hachage.
  • Cette API utilise par défaut l'algorithme BCrypt et gère automatiquement la génération de valeurs de sel sans que les développeurs le fournissent. Cependant, les développeurs peuvent toujours fournir leurs propres valeurs de sel ou de coûts en passant un troisième paramètre à la fonction password_hash().
  • Cette API est considérée comme très sécurisée, mais elle est recommandée de l'utiliser dans le cadre d'une politique de sécurité complète. Les développeurs utilisant PHP 5.3.7 ou ultérieure peuvent utiliser une bibliothèque appelée password_compat qui imite l'API et se désactive automatiquement après la mise à niveau de la version PHP à 5.5.

L'utilisation de BCrypt est actuellement reconnue comme la meilleure pratique de hachage de mot de passe, mais de nombreux développeurs utilisent toujours des algorithmes plus anciens et plus faibles comme MD5 et Sha1. Certains développeurs n'utilisent même pas de sel lors du hachage. La nouvelle API de hachage dans PHP 5.5 est conçue pour attirer l'attention sur Bcrypt tout en cachant sa complexité. Dans cet article, je couvrirai les bases de l'utilisation de l'API PHP New Hash. L'API du hachage du nouvel mot de passe expose quatre fonctions simples:

  • password_hash() - Utilisé pour hacher le mot de passe.
  • password_verify() - Utilisé pour vérifier les mots de passe en fonction de leur valeur de hachage.
  • password_needs_rehash() - Utilisé lors de la remise en état du mot de passe.
  • password_get_info() - Renvoie le nom de l'algorithme de hachage et les différentes options utilisées dans le processus de hachage.

password_hash()

Bien que la fonction crypt() soit sûre, beaucoup de gens pensent qu'il est trop complexe et trop sujet aux erreurs. Ensuite, certains développeurs utilisent un sel faible et des algorithmes faibles pour générer des hachages, tels que:

<?php $hash = md5($password . $salt); // 可行,但危险

Cependant, la fonction password_hash() simplifie notre travail et notre code peut être maintenu en sécurité. Lorsque vous avez besoin d'un mot de passe de hachage, donnez-le simplement à la fonction et il renverra une valeur de hachage qui peut être stockée dans la base de données.

<?php $hash = md5($password . $salt); // 可行,但危险

c'est tout! Le premier paramètre est la chaîne de mot de passe à avoir, et le deuxième paramètre spécifie l'algorithme appliqué pour générer le hachage. L'algorithme par défaut actuel est BCrypt, mais à l'avenir, il peut ajouter un algorithme plus puissant comme algorithme par défaut et peut générer des chaînes plus grandes. Si vous utilisez PASSWORD_DEFAULT dans votre projet, assurez-vous de stocker le hachage dans une colonne avec une capacité de plus de 60 caractères. La définition de la taille de la colonne sur 255 peut être un bon choix. Vous pouvez également utiliser PASSWORD_BCRYPT comme deuxième paramètre. Dans ce cas, le résultat est toujours de 60 caractères. Il est important ici que vous n'ayez pas à fournir des paramètres de valeur de sel ou de coût. La nouvelle API gérera tout cela pour vous. Le sel fait partie du hachage, vous n'avez donc pas à le stocker séparément. Si vous souhaitez fournir votre propre sel (ou coût), vous pouvez le faire en passant un troisième paramètre (un tableau d'options) à la fonction.

<?php $hash = password_hash($password, PASSWORD_DEFAULT);

De cette manière, vous pouvez toujours utiliser les dernières mesures de sécurité. Si PHP décide plus tard d'implémenter un algorithme de hachage plus puissant, votre code peut en profiter.

password_verify()

Maintenant que vous avez appris à générer des hachages à l'aide de la nouvelle API, voyons comment vérifier votre mot de passe. N'oubliez pas que vous stockez le hachage dans la base de données, mais ce que vous obtenez est un mot de passe en texte brut lorsque l'utilisateur se connecte. La fonction password_verify() prend un mot de passe de texte brut et une chaîne de hachage comme deux paramètres. Renvoie True si le hachage correspond au mot de passe spécifié.

<?php $options = [
    'salt' => custom_function_for_salt(), //编写您自己的代码以生成合适的盐
    'cost' => 12 // 默认成本为 10
];
$hash = password_hash($password, PASSWORD_DEFAULT, $options);

N'oubliez pas que le sel fait partie du mot de passe de hachage, c'est pourquoi nous ne le spécifions pas séparément ici.

password_needs_rehash()

Que dois-je faire si je dois modifier les paramètres de sel et de coût de la chaîne de hachage? C'est une préoccupation car vous pouvez décider d'améliorer la sécurité en ajoutant un sel plus fort ou des paramètres de coût plus élevés. De plus, PHP peut modifier l'implémentation par défaut de l'algorithme de hachage. Dans tous ces cas, vous souhaitez remanier le mot de passe existant. password_needs_rehash()

Aide à vérifier si un hachage spécifié implémente un algorithme spécifique et utilise des options spécifiques (telles que le coût et le sel) lors de la création.

<?php if (password_verify($password, $hash)) {
    // 成功!
} else {
    // 无效的凭据
}

N'oubliez pas que lorsqu'un utilisateur essaie de vous connecter à votre site Web, vous devez le faire car c'est juste le moment où vous pouvez accéder à votre mot de passe en texte brut.

password_get_info()

password_get_info() accepte un hachage et renvoie un tableau associatif contenant trois éléments:

  • algo - Une constante qui identifie un algorithme spécifique
  • algoName - Le nom de l'algorithme utilisé
  • options - Diverses options utilisées lors de la génération de hachage

Conclusion

La nouvelle API de hachage de mot de passe est plus facile à utiliser que l'utilisation de la fonction crypt(). Si votre site Web s'exécute actuellement sur PHP 5.5, je recommande fortement d'utiliser la nouvelle API de hachage. Les personnes utilisant PHP 5.3.7 (ou ultérieure) peuvent utiliser une bibliothèque appelée password_compat, qui imite l'API et se désactive automatiquement après la mise à niveau de la version PHP à 5.5.

PHP 5.5 Mot de passe Hash Hash API FAQ (FAQ)

Quelle est l'API de hachage de mot de passe PHP 5.5 et pourquoi est-il important?

L'API de hachage de mot de passe PHP 5.5 est une fonctionnalité dans PHP 5.5 et plus tard qui fournit aux développeurs un moyen facile de hacher et de vérifier les mots de passe de manière sécurisée. Il est important car il aide à protéger les données des utilisateurs sensibles. Si la base de données est piratée, les mots de passe du hachage sont plus difficiles à casser que les mots de passe en texte brut. L'API utilise la puissante fonction de hachage BCrypt par défaut et gère automatiquement la génération de valeurs de sel, ce qui permet aux développeurs d'implémenter plus facilement le traitement de mot de passe sécurisé.

password_hash Comment fonctionne la fonction?

La fonction

password_hash fait partie de l'API de hachage de mot de passe PHP 5.5. Il reçoit un mot de passe en texte brut et un algorithme de hachage en entrée et renvoie un mot de passe de hachage. La fonction génère également et applique également une valeur de sel aléatoire au mot de passe avant le hachage. Cette valeur de sel est contenue dans le hachage retourné, il n'est donc pas nécessaire de le stocker séparément.

password_verify Quel est le but de la fonction?

La fonction

password_verify est utilisée pour vérifier les mots de passe en fonction des mots de passe de hachage. Il reçoit un mot de passe en texte brut et un mot de passe de hachage en entrée. Cette fonction extrait les valeurs de sel et les algorithmes de hachage à partir du mot de passe haché, les applique au mot de passe en texte brut, puis compare les résultats avec le mot de passe hachis d'origine. S'il correspond, la fonction renvoie true, indiquant que le mot de passe est correct.

Comment est la sécurité de l'API de hachage de mot de passe PHP 5.5?

L'API de hachage de mot de passe PHP 5.5 est considéré comme très sécurisé. Il utilise l'algorithme de hachage BCrypt par défaut, ce qui est une fonction de hachage puissante. L'API génère et applique également automatiquement une valeur de sel aléatoire pour chaque mot de passe, ce qui aide à prévenir les attaques de table arc-en-ciel. Cependant, comme toutes les mesures de sécurité, il n'est pas infaillible et doit être utilisé dans le cadre d'une politique de sécurité complète.

Puis-je utiliser du sel personnalisé dans la fonction password_hash?

Oui, vous pouvez utiliser du sel personnalisé dans la fonction password_hash, mais cela n'est pas recommandé. Cette fonction génère automatiquement une valeur de sel aléatoire pour chaque mot de passe, qui est généralement plus sûr que le sel personnalisé. Si vous choisissez d'utiliser un sel personnalisé, ce devrait être une chaîne aléatoire d'au moins 22 caractères.

password_hash Quels sont les paramètres de coût dans la fonction?

password_hash Les paramètres de coût de la fonction déterminent le coût de calcul du hachage. Des coûts plus élevés rendent le hachage plus sûr, mais aussi les calculs plus lents. Le coût par défaut est de 10, ce qui est un bon équilibre entre la sécurité et les performances pour la plupart des applications.

Comment vérifier si le mot de passe du hachage doit être remanié?

Vous pouvez utiliser la fonction password_needs_rehash pour vérifier si le mot de passe de hachage doit être rétabli. Cette fonction reçoit le mot de passe de hachage, l'algorithme de hachage et le coût facultatif en entrée. Si le mot de passe de hachage est créé avec un algorithme ou un coût différent, il renvoie vrai, ce qui indique qu'il devrait être rétabli.

Puis-je utiliser l'API de hachage de mot de passe PHP 5.5 avec des versions plus anciennes de PHP?

L'API de hachage de mot de passe PHP 5.5 est uniquement disponible en PHP 5.5 et plus tard. Cependant, il existe une bibliothèque de compatibilité qui fournit les mêmes fonctionnalités pour PHP 5.3.7 et plus tard.

Que se passe-t-il si j'ai le mot de passe en utilisant le hachage constant PASSWORD_DEFAULT puis l'algorithme par défaut change dans les versions futures de PHP?

Si vous avez le mot de passe en utilisant la constante PASSWORD_DEFAULT puis l'algorithme par défaut dans les versions futures de PHP change, la fonction password_hash continuera de fonctionner comme prévu. Le mot de passe haché contient des informations sur l'algorithme utilisé, de sorte que la fonction password_verify peut toujours vérifier correctement le mot de passe.

Puis-je utiliser l'API de hachage de mot de passe PHP 5.5 avec des mots de passe non ASCII?

Oui, vous pouvez utiliser l'API de hachage de mot de passe PHP 5.5 avec des mots de passe non ASCII. Les fonctions password_hash et password_verify utilisent des données binaires, afin qu'elles puissent gérer les mots de passe pour n'importe quel caractère. Cependant, vous devez noter que différents systèmes peuvent gérer différemment les caractères non ASCII, c'est donc une bonne idée de les normaliser avant de hacher le mot de passe.

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!

Déclaration
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
Comment PHP identifie-t-il la session d'un utilisateur?Comment PHP identifie-t-il la session d'un utilisateur?May 01, 2025 am 12:23 AM

Phpidentifiesauser'sessionusingssse cookiesand sessionids.1) whenSession_start () est calculé, phpgeneratesauquesseSessionIdStoredInacookIenameDPhpSesssIdonUser'sbrowser.2) thisIdallowsphptoreTrrieSeSessionDatafromTeserver.

Quelles sont les meilleures pratiques pour sécuriser les séances PHP?Quelles sont les meilleures pratiques pour sécuriser les séances PHP?May 01, 2025 am 12:22 AM

La sécurité des sessions PHP peut être obtenue grâce aux mesures suivantes: 1. Utilisez Session_RegeReate_ID () pour régénérer l'ID de session lorsque l'utilisateur se connecte ou est une opération importante. 2. Cryptez l'ID de session de transmission via le protocole HTTPS. 3. Utilisez session_save_path () pour spécifier le répertoire sécurisé pour stocker les données de session et définir correctement les autorisations.

Où les fichiers de session PHP sont-ils stockés par défaut?Où les fichiers de session PHP sont-ils stockés par défaut?May 01, 2025 am 12:15 AM

PhpSessionFilesArestorentheDirectorySpecifiedSession.save_path, généralement / tmponunix-likesystemsorc: \ windows \ temponwindows.tocustomzethis: 1) usession_save_path () tosetacustomDirectory, astumeit'swrit

Comment récupérer les données d'une session PHP?Comment récupérer les données d'une session PHP?May 01, 2025 am 12:11 AM

ToretrrievedatafromaphpSession, startTheSessionwithSession_start () et accessvariablesInthe $ _sessionArray.forexample: 1) startTheSession: session_start (). 2) récupéré: $ username = $ _ session ['userSeger']; echo "bienvenue,". $ Username;..

Comment pouvez-vous utiliser des sessions pour mettre en œuvre un panier?Comment pouvez-vous utiliser des sessions pour mettre en œuvre un panier?May 01, 2025 am 12:10 AM

Les étapes pour construire un système de panier d'achat efficace à l'aide de sessions comprennent: 1) Comprendre la définition et la fonction de la session. La session est un mécanisme de stockage côté serveur utilisé pour maintenir l'état de l'utilisateur entre les demandes; 2) Implémenter la gestion de session de base, comme l'ajout de produits au panier; 3) développer une utilisation avancée, soutenant la gestion de la quantité de produits et la suppression; 4) Optimiser les performances et la sécurité, en persistant les données de session et en utilisant des identifiants de session sécurisés.

Comment créez-vous et utilisez-vous une interface dans PHP?Comment créez-vous et utilisez-vous une interface dans PHP?Apr 30, 2025 pm 03:40 PM

L'article explique comment créer, mettre en œuvre et utiliser des interfaces dans PHP, en se concentrant sur leurs avantages pour l'organisation du code et la maintenabilité.

Quelle est la différence entre crypte () et mot de passe_hash ()?Quelle est la différence entre crypte () et mot de passe_hash ()?Apr 30, 2025 pm 03:39 PM

L'article traite des différences entre crypt () et mot de passe_hash () dans PHP pour le hachage de mot de passe, en se concentrant sur leur implémentation, leur sécurité et leur aptitude aux applications Web modernes.

Comment pouvez-vous prévenir les scripts inter-sites (XSS) en PHP?Comment pouvez-vous prévenir les scripts inter-sites (XSS) en PHP?Apr 30, 2025 pm 03:38 PM

L'article discute de la prévention des scripts inter-sites (XSS) dans PHP par validation d'entrée, en codage de sortie et en utilisant des outils comme OWASP ESAPI et Purificateur HTML.

See all articles

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

PhpStorm version Mac

PhpStorm version Mac

Le dernier (2018.2.1) outil de développement intégré PHP professionnel

Version crackée d'EditPlus en chinois

Version crackée d'EditPlus en chinois

Petite taille, coloration syntaxique, ne prend pas en charge la fonction d'invite de code

Télécharger la version Mac de l'éditeur Atom

Télécharger la version Mac de l'éditeur Atom

L'éditeur open source le plus populaire

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

MinGW - GNU minimaliste pour Windows

MinGW - GNU minimaliste pour Windows

Ce projet est en cours de migration vers osdn.net/projects/mingw, vous pouvez continuer à nous suivre là-bas. MinGW : un port Windows natif de GNU Compiler Collection (GCC), des bibliothèques d'importation et des fichiers d'en-tête librement distribuables pour la création d'applications Windows natives ; inclut des extensions du runtime MSVC pour prendre en charge la fonctionnalité C99. Tous les logiciels MinGW peuvent fonctionner sur les plates-formes Windows 64 bits.