


Hachage des mots de passe avec l'API de hachage de mot de passe PHP 5.5
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!

Outils d'IA chauds

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

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

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

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 !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

JWT est une norme ouverte basée sur JSON, utilisée pour transmettre en toute sécurité des informations entre les parties, principalement pour l'authentification de l'identité et l'échange d'informations. 1. JWT se compose de trois parties: en-tête, charge utile et signature. 2. Le principe de travail de JWT comprend trois étapes: la génération de JWT, la vérification de la charge utile JWT et l'analyse. 3. Lorsque vous utilisez JWT pour l'authentification en PHP, JWT peut être généré et vérifié, et les informations sur le rôle et l'autorisation des utilisateurs peuvent être incluses dans l'utilisation avancée. 4. Les erreurs courantes incluent une défaillance de vérification de signature, l'expiration des jetons et la charge utile surdimensionnée. Les compétences de débogage incluent l'utilisation des outils de débogage et de l'exploitation forestière. 5. L'optimisation des performances et les meilleures pratiques incluent l'utilisation des algorithmes de signature appropriés, la définition des périodes de validité raisonnablement,

La fonction d'énumération dans PHP8.1 améliore la clarté et la sécurité du type du code en définissant les constantes nommées. 1) Les énumérations peuvent être des entiers, des chaînes ou des objets, améliorant la lisibilité du code et la sécurité des types. 2) L'énumération est basée sur la classe et prend en charge des fonctionnalités orientées objet telles que la traversée et la réflexion. 3) L'énumération peut être utilisée pour la comparaison et l'attribution pour assurer la sécurité du type. 4) L'énumération prend en charge l'ajout de méthodes pour implémenter une logique complexe. 5) La vérification stricte et la gestion des erreurs peuvent éviter les erreurs courantes. 6) L'énumération réduit la valeur magique et améliore la maintenabilité, mais prêtez attention à l'optimisation des performances.

Le détournement de la session peut être réalisé via les étapes suivantes: 1. Obtenez l'ID de session, 2. Utilisez l'ID de session, 3. Gardez la session active. Les méthodes pour empêcher le détournement de la session en PHP incluent: 1. Utilisez la fonction Session_RegeReate_id () pour régénérer l'ID de session, 2. Stocker les données de session via la base de données, 3. Assurez-vous que toutes les données de session sont transmises via HTTPS.

L'application du principe solide dans le développement de PHP comprend: 1. Principe de responsabilité unique (SRP): Chaque classe n'est responsable d'une seule fonction. 2. Principe ouvert et ferme (OCP): les changements sont réalisés par extension plutôt que par modification. 3. Principe de substitution de Lisch (LSP): les sous-classes peuvent remplacer les classes de base sans affecter la précision du programme. 4. Principe d'isolement d'interface (ISP): utilisez des interfaces à grain fin pour éviter les dépendances et les méthodes inutilisées. 5. Principe d'inversion de dépendance (DIP): les modules élevés et de bas niveau reposent sur l'abstraction et sont mis en œuvre par injection de dépendance.

Liaison statique (statique: :) implémente la liaison statique tardive (LSB) dans PHP, permettant à des classes d'appel d'être référencées dans des contextes statiques plutôt que de définir des classes. 1) Le processus d'analyse est effectué au moment de l'exécution, 2) Recherchez la classe d'appel dans la relation de succession, 3) il peut apporter des frais généraux de performance.

Les principes de conception de Restapi incluent la définition des ressources, la conception URI, l'utilisation de la méthode HTTP, l'utilisation du code d'état, le contrôle de version et les haineux. 1. Les ressources doivent être représentées par des noms et maintenues dans une hiérarchie. 2. Les méthodes HTTP devraient être conformes à leur sémantique, telles que GET est utilisée pour obtenir des ressources. 3. Le code d'état doit être utilisé correctement, tel que 404 signifie que la ressource n'existe pas. 4. Le contrôle de la version peut être implémenté via URI ou en-tête. 5. Hateoas bottise les opérations du client via des liens en réponse.

En PHP, la gestion des exceptions est réalisée grâce aux mots clés d'essai, de catch, enfin et de lancement. 1) Le bloc d'essai entoure le code qui peut lancer des exceptions; 2) Le bloc de capture gère les exceptions; 3) Enfin, Block garantit que le code est toujours exécuté; 4) Le lancer est utilisé pour lancer manuellement les exceptions. Ces mécanismes aident à améliorer la robustesse et la maintenabilité de votre code.

La fonction principale des classes anonymes en PHP est de créer des objets uniques. 1. Les classes anonymes permettent aux classes sans nom d'être définies directement dans le code, ce qui convient aux exigences temporaires. 2. Ils peuvent hériter des classes ou implémenter des interfaces pour augmenter la flexibilité. 3. Faites attention aux performances et à la lisibilité au code lorsque vous l'utilisez et évitez de définir à plusieurs reprises les mêmes classes anonymes.
