Maison > développement back-end > tutoriel php > Comment les fonctions password_hash() et password_verify() de PHP peuvent-elles stocker et vérifier les mots de passe en toute sécurité ?

Comment les fonctions password_hash() et password_verify() de PHP peuvent-elles stocker et vérifier les mots de passe en toute sécurité ?

DDD
Libérer: 2024-12-07 02:09:14
original
1064 Les gens l'ont consulté

How Can PHP's password_hash() and password_verify() Functions Securely Store and Verify Passwords?

Stockage et vérification des mots de passe en toute sécurité avec les fonctions de gestion des mots de passe de PHP

Lorsqu'il s'agit de gérer les mots de passe dans les applications Web, la sécurité est primordiale. PHP 5.5 a introduit les fonctions password_hash() et password_verify() pour vous aider dans cette tâche critique.

Création d'un hachage sécurisé

La fonction password_hash() génère un hachage sécurisé d'un mot de passe donné à l'aide d'un algorithme comme BCRYPT. Pour créer un hachage, trois paramètres sont nécessaires : le mot de passe lui-même, l'algorithme de hachage (par exemple, PASSWORD_BCRYPT) et un ensemble d'options. Les options incluent la spécification du coût (un facteur de calcul) et un sel unique (des données générées aléatoirement ajoutées au hachage pour augmenter son caractère unique).

Stockage du mot de passe et du sel

Contrairement à la requête initiale, la bonne approche consiste à stocker à la fois le hachage et le sel dans la base de données. En effet, password_hash() renvoie une chaîne contenant les deux éléments. Ainsi, dans une instruction MySQL par exemple :

INSERT INTO users(username, password_hash) VALUES($username, $hashAndSalt);
Copier après la connexion

Vérification du mot de passe

Lorsqu'un utilisateur se connecte, le mot de passe qu'il saisit doit être vérifié par rapport au hachage stocké. Pour ce faire, récupérez le hachage stocké (qui contient à la fois le hachage et le sel) et transmettez-le à password_verify() :

if (password_verify($password, $hashAndSalt)) {
    // Verified
}
Copier après la connexion

Mesures de sécurité supplémentaires

Au-delà l'utilisation de ces fonctions, envisagez d'autres mesures de sécurité :

  • Utilisez une connexion sécurisée à la base de données (par ex., mysqli_real_connect() de MySQLi avec SSL).
  • Protégez-vous contre les attaques par injection SQL.
  • Mettez régulièrement à niveau PHP et ses extensions.
  • Mettez en œuvre la gestion des sessions et la limitation du débit pour empêcher la brutalité des mots de passe. tentatives de force.

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