Comment crypter et déchiffrer en toute sécurité des mots de passe en PHP
Le stockage d'informations utilisateur sensibles, telles que les informations d'identification de comptes étrangers, nécessite des précautions particulières pour garantir que les données sécurité. Bien que le chiffrement fournisse une couche de protection, il est crucial d'employer des méthodes robustes qui empêchent tout accès non autorisé aux données en texte brut.
Hachage ou chiffrement
Le hachage est l'approche privilégiée pour stockage de mot de passe. Contrairement au chiffrement, le hachage transforme de manière irréversible les mots de passe en un format unique et irréversible, rendant pratiquement impossible la récupération du mot de passe d'origine. Cela garantit que même si les attaquants accèdent aux mots de passe hachés, ils ne peuvent pas compromettre les comptes d'utilisateurs.
Fonctions de cryptage et de décryptage
Pour les situations où le cryptage est nécessaire, PHP fournit plusieurs fonctions pour crypter et déchiffrer le texte. Une méthode courante est le chiffre de Rijndael, également connu sous le nom d'AES-128 :
$key = 'password to (en/de)crypt'; $string = ' string to be encrypted '; // note the spaces
Pour chiffrer :
$iv = mcrypt_create_iv( mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC), MCRYPT_DEV_URANDOM ); $encrypted = base64_encode( $iv . mcrypt_encrypt( MCRYPT_RIJNDAEL_128, hash('sha256', $key, true), $string, MCRYPT_MODE_CBC, $iv ) );
Pour Décrypter :
$data = base64_decode($encrypted); $iv = substr($data, 0, mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC)); $decrypted = rtrim( mcrypt_decrypt( MCRYPT_RIJNDAEL_128, hash('sha256', $key, true), substr($data, mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC)), MCRYPT_MODE_CBC, $iv ), "" );
Avertissement
Les données cryptées sont vulnérables aux attaques Oracle de remplissage si elles ne sont pas authentifiées. Les mécanismes de chiffrement authentifiés doivent toujours être utilisés conjointement avec le chiffrement.
Bonnes pratiques
Pour garantir le plus haut niveau de sécurité, suivez ces bonnes pratiques :
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!