Maison >base de données >tutoriel mysql >Comment `password_hash()` et `password_verify()` de PHP 5.5 peuvent-ils sécuriser le stockage des mots de passe ?

Comment `password_hash()` et `password_verify()` de PHP 5.5 peuvent-ils sécuriser le stockage des mots de passe ?

DDD
DDDoriginal
2024-12-22 21:49:18461parcourir

How Can PHP 5.5's `password_hash()` and `password_verify()` Secure Password Storage?

Utiliser les fonctions password_hash et password_verify de PHP 5.5 pour sécuriser le stockage des mots de passe

Le stockage sécurisé des mots de passe est crucial pour maintenir l'intégrité des données utilisateur. PHP 5.5 a introduit les fonctions password_hash() et password_verify() pour fournir un moyen sécurisé et efficace de le faire.

password_hash() et Salt

Contrairement aux anciens stockages de mots de passe méthodes, password_hash() utilise un sel unique pour chaque mot de passe. Un sel est une chaîne aléatoire qui empêche les attaques par table arc-en-ciel, où les attaquants tentent des hachages de mot de passe courants.

Stockage du mot de passe et du sel

Pour stocker un mot de passe avec PHP 5.5 password_hash(), suivez ces étapes :

  1. Générez un sel en utilisant uniqid() ou un similaire fonction.
  2. Appelez password_hash() avec le mot de passe, PASSWORD_BCRYPT, et le tableau d'options contenant le sel et un coût (recommandé : 10-12).
  3. La fonction password_hash() renverra un chaîne hachée qui inclut à la fois le hachage et le sel.

Exemple :

$options = ["cost" => 10, "salt" => uniqid()];
$hashAndSalt = password_hash($password, PASSWORD_BCRYPT, $options);

Vérification du mot de passe

Pour vérifier un mot de passe, récupérez le hashAndSalt depuis la base de données et appelez password_verify() avec le mot de passe fourni et le mot de passe stocké hashAndSalt.

Exemple :

if (password_verify($password, $hashAndSalt)) {
    // Password verified successfully
}

Mesures de sécurité supplémentaires

Alors que password_hash() fournit un moyen sécurisé de stocker mots de passe, il est recommandé de :

  • Utiliser un paramètre de coût de 10 ou supérieur.
  • Utilisez mysqli au lieu de mysql pour la gestion de la base de données.
  • Mettez en œuvre des techniques de protection contre les injections SQL.

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