Position actuelle: Accueil> Derniers articles> Utilisez Crypt () pour refacter la logique de traitement du mot de passe des anciens systèmes

Utilisez Crypt () pour refacter la logique de traitement du mot de passe des anciens systèmes

M66 2025-05-27

La sécurité de la logique de traitement des mots de passe est particulièrement importante lors du maintien et de la mise à niveau des anciens systèmes. Les méthodes de cryptage de mot de passe utilisées par de nombreux anciens systèmes ne sont plus sécurisées et sont facilement fissurées. PHP fournit une fonction crypt () qui peut combiner différents algorithmes de chiffrement pour générer des valeurs de hachage sécurisées, nous aidant à reconstruire la logique de traitement du mot de passe et à améliorer la sécurité du système.

Cet article présentera comment utiliser la fonction Crypt () de PHP, combiner le sel et les algorithmes sûrs et remplacer progressivement les méthodes de cryptage de mot de passe dangereuses dans les anciens systèmes.

1. Pourquoi utiliser la fonction crypte () ?

Crypt () est une fonction de hachage de mot de passe intégrée dans PHP et prend en charge une variété d'algorithmes de chiffrement, tels que:

  • Des

  • Md5

  • Flowfish

  • SHA-256

  • SHA-512

Il peut sélectionner automatiquement l'algorithme correspondant basé sur le sel entrant pour générer un hachage de mot de passe avec une résistance élevée, ce qui est difficile à être cassé inversé. Par rapport à l'utilisation directe de fonctions telles que MD5 et Sha1, Crypt () est plus adapté au chiffrement des mots de passe.

2. Problèmes dans le traitement du mot de passe du système ancien

De nombreux anciens systèmes ont un cryptage de mot de passe simple et peuvent avoir les défauts suivants:

  • L'utilisation d'un seul hachage sans sel (comme MD5 ou SHA1) peut facilement être fissurée par des attaques de table arc-en-ciel.

  • Le sel est fixe ou simple et ne peut pas empêcher le même mot de passe de produire le même hachage.

  • Stockage directement en texte clair ou en cryptage simple, il existe un risque de fuite.

Tous ces éléments ont considérablement réduit la sécurité du système.

3. Exemple de cryptage de mot de passe à l'aide de crypte ()

L'exemple suivant montre comment générer du hachage pour les mots de passe à l'aide de Crypt () combinés avec l'algorithme Blowfish.

 <?php
// Mot de passe en texte en clair soumis par l&#39;utilisateur
$password = 'user_password';

// Générer des sels aléatoires,BlowfishL&#39;algorithme nécessite un format de sel:$2y$ + costparamètre + 22Caractère de caractère
$cost = 12; // Calculer le coût,Plus le nombre est grand, plus il est sûr, mais plus il est consommateur de ressources.
$salt = sprintf('$2y$%02d$%s', $cost, substr(strtr(base64_encode(random_bytes(16)), '+', '.'), 0, 22));

// utiliser crypt() Générer du hachage de mot de passe
$hash = crypt($password, $salt);

echo "Hachage de mot de passe comme: " . $hash;
?>

Cette chaîne de hachage peut être stockée dans la base de données. Lors de la vérification du mot de passe, utilisez la même fonction crypt () et passez le hachage dans la base de données comme paramètre de sel pour utiliser automatiquement le sel et l'algorithme corrects.

4. Exemple de vérification du mot de passe

Pour vérifier le mot de passe, il vous suffit d'appeler Crypt () une fois et de comparer les résultats:

 <?php
$input_password = 'user_password'; // Entrée utilisateur
$stored_hash = '$2y$12$wW5O3K7uGp1oKpJ.HUJZEuWQNUkXpzB1I7N1h7qMm6E82JZXNpM4a'; // Hachage stocké dans la base de données

if (crypt($input_password, $stored_hash) === $stored_hash) {
    echo "La vérification du mot de passe s&#39;est écoulée";
} else {
    echo "Mot de passe d&#39;erreur";
}
?>

Cela garantit que même si le mot de passe est le même, le hachage généré par différents sels sera différent, améliorant ainsi la sécurité.

5. Comment remplacer progressivement les anciens systèmes

  • Évaluez la méthode de stockage de mot de passe existante pour confirmer s'il existe un texte clair ou un chiffrement faible.

  • Concevoir des stratégies de migration , telles que la détection du format de hachage de mot de passe lorsque l'utilisateur se connecte, et après la vérification de l'ancien format, utilisez Crypt () pour générer un nouveau hachage pour écraser l'ancien hachage.

  • Lorsque vous ajoutez de nouveaux utilisateurs ou réinitialisez les mots de passe, utilisez directement la nouvelle méthode de chiffrement.

  • Renforcer la configuration de sécurité globale du système , limiter le nombre de tentatives de connexion, utiliser HTTPS et protéger la sécurité de la transmission des données.

6. Évitez les malentendus courants

  • N'implémentez pas la logique de génération de sel vous-même. Il est recommandé d'utiliser de fortes fonctions aléatoires telles que random_bytes () .

  • N'utilisez pas d'algorithmes à faible coût et définissez raisonnablement les paramètres de coût (comme le coût de Blowfish> = 12).

  • Évitez d'utiliser directement le hachage de mot de passe pour la transmission d'URL et assurez-vous d'être correctement codé et protégé si nécessaire.

7. Combinaison du cadre et de la bibliothèque

Si le système le prend en charge, vous pouvez combiner les fonctions de Password_Hash () et Password_verify () de PHP (PHP 5.5+). La couche sous-jacente utilise également Crypt () pour fournir une interface plus concise et sûre.

 <?php
$hash = password_hash('user_password', PASSWORD_BCRYPT);
if (password_verify('user_password', $hash)) {
    echo "La vérification du mot de passe a réussi";
}
?>

8. Ressources supplémentaires