


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!

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

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.

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

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

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.

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é.

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.

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.


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

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

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
L'éditeur open source le plus populaire

Dreamweaver CS6
Outils de développement Web visuel

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.
