Maison > développement back-end > tutoriel php > Comment puis-je stocker et récupérer des mots de passe en toute sécurité à l'aide du cryptage bidirectionnel en PHP ?

Comment puis-je stocker et récupérer des mots de passe en toute sécurité à l'aide du cryptage bidirectionnel en PHP ?

Barbara Streisand
Libérer: 2024-12-19 12:08:39
original
830 Les gens l'ont consulté

How Can I Securely Store and Retrieve Passwords Using Two-Way Encryption in PHP?

Cryptage bidirectionnel : stockage des mots de passe récupérables

Introduction

Stockage sécurisé des mots de passe tout en autorisant les utilisateurs de les récupérer pose un défi. Le chiffrement symétrique peut répondre à ce besoin, mais comprendre les nuances de mise en œuvre est crucial.

Chiffrement et déchiffrement en PHP

Pour chiffrer et déchiffrer les mots de passe en PHP, envisagez d'utiliser le bibliothèques mcrypt ou OpenSSL. Voici un exemple utilisant mcrypt :

function encrypt($password, $key)
{
    $iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC), MCRYPT_DEV_URANDOM);
    return mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $password, MCRYPT_MODE_CBC, $iv);
}

function decrypt($encryptedPassword, $key)
{
    $iv = substr($encryptedPassword, 0, mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC));
    $password = substr($encryptedPassword, mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC));
    return mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, $password, MCRYPT_MODE_CBC, $iv);
}
Copier après la connexion

Algorithme le plus sûr

Le meilleur algorithme de chiffrement dépend du cas d'utilisation spécifique. Pour stocker les mots de passe, AES-256 (Rijndael) en mode CBC ou CTR est généralement considéré comme robuste.

Stockage de clé privée

Le stockage de la clé privée en toute sécurité est essentiel. Une approche recommandée consiste à utiliser une combinaison du mot de passe de l'utilisateur et d'un sel côté serveur. En PHP, cela peut être réalisé en utilisant :

$salt = mcrypt_create_iv(16, MCRYPT_DEV_URANDOM);
$key = hash('sha256', $userPassword . $salt);
Copier après la connexion

Clé privée comme entrée utilisateur

Si les utilisateurs sont dignes de confiance, leur demander de fournir la clé privée lors de la récupération les mots de passe peuvent offrir une sécurité supplémentaire. Cela protège contre les violations côté serveur.

Risques de sécurité

Les mots de passe cryptés peuvent être vulnérables à :

  • Fuite de clé
  • Attaques par force brute
  • Replay attaques
  • Interception
  • Attaques connues en texte clair

Stratégies d'atténuation

Pour atténuer ces risques, mettez en œuvre :

  • Algorithmes de cryptage puissants
  • Clé sécurisée stockage
  • Hachage de mot de passe
  • Délai d'attente lors des tentatives de décryptage
  • Authentification à deux facteurs

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal