Position actuelle: Accueil> Derniers articles> Intégrer crypt () comme schéma de chiffrement dans CMS

Intégrer crypt () comme schéma de chiffrement dans CMS

M66 2025-05-28

Dans les systèmes de gestion de contenu (CMS), la sécurité des données utilisateur est cruciale, en particulier le stockage des mots de passe. La fonction crypt () fournie avec PHP est une méthode de chiffrement classique et sécurisée de mot de passe. L'utiliser est raisonnablement peut améliorer considérablement la sécurité du système. Cet article expliquera en profondeur comment intégrer efficacement la fonction crypt () dans le système CMS pour assurer la sécurité et la flexibilité du stockage de mot de passe.

1. Comprendre la fonction crypte ()

Crypt () est une fonction de chiffrement intégrée en PHP et est implémentée sur la base d'une variété d'algorithmes de chiffrement (tels que DES, Blowfish, SHA-256, SHA-512, etc.). Il génère une chaîne cryptée irréversible en transmettant un paramètre "Valeur de sel", adapté au stockage de hachage de mot de passe.

 $hashed_password = crypt($password, $salt);

La valeur de sel est la clé pour assurer la sécurité du chiffrement et empêcher les attaques de table arc-en-ciel.

2. Choisissez le bon algorithme de chiffrement

crypt () prend en charge différents algorithmes, sous la forme comme suit:

  • DES (non recommandé, faible sécurité)

  • Blowfish (identifiant 2 $ $ , recommandé pour le hachage de mot de passe moderne)

  • SHA-256 (identifiant 5 $ )

  • SHA-512 (identifiant 6 $ )

Par exemple, utilisez Blowfish:

 $salt = '$2y$12$' . substr(bin2hex(random_bytes(16)), 0, 22);
$hash = crypt($password, $salt);

Ici, 2 $ $ représente l'algorithme, 12 est le paramètre de coût (nombre d'itérations, plus la valeur est grande, plus elle prend du temps), suivie de 22 caractères de sel.

3. Exemple d'intégration: le processus d'enregistrement et de connexion des utilisateurs

Mot de passe crypté lors de l'enregistrement

 function createPasswordHash($password) {
    // Générer des sels aléatoires,utiliser Blowfish algorithme
    $salt = '$2y$12$' . substr(strtr(base64_encode(random_bytes(16)), '+', '.'), 0, 22);
    // Générer du hachage
    return crypt($password, $salt);
}

Lorsque l'utilisateur s'inscrit, le mot de passe en texte brut est généré via les fonctions ci-dessus et stocké dans la base de données.

Vérifiez le mot de passe lors de la connexion

 function verifyPassword($password, $hashedPassword) {
    // utiliser stored hash Comparaison du sel dans la cryptographie
    return crypt($password, $hashedPassword) === $hashedPassword;
}

Lorsque vous vous connectez, retirez le mot de passe de hachage stocké dans la base de données, utilisez son sel pour crypter à nouveau le mot de passe d'entrée et comparer et déterminer s'il correspond.

4. Concevoir des champs de base de données

Les champs de mot de passe sont recommandés pour être de type de chaîne, avec une longueur d'au moins 60 caractères pour accueillir le hachage généré par Blowfish:

 CREATE TABLE users (
    id INT PRIMARY KEY AUTO_INCREMENT,
    username VARCHAR(50) UNIQUE NOT NULL,
    password_hash CHAR(60) NOT NULL,
    ...
);

5. Précautions et suggestions de sécurité

  • Ne personnalisez pas le sel : utilisez le format de sel généré par Crypt () , ou utilisez la fonction Password_Hash () (PHP 5.5+) pour simplifier les opérations.

  • Mise à jour du mot de passe : considérez les utilisateurs qui utilisent des algorithmes plus faibles pour les anciens mots de passe, régénérez des hachages cryptés plus forts lors de la connexion.

  • Force du mot de passe : combinant la complexité de mot de passe forcée frontale et back-end pour éviter les mots de passe faibles.

  • Évitez le stockage en texte clair : ne stockez jamais de mots de passe en texte en clair ou de mots de passe chiffrés réversibles.

6. combinaison API de hachage de mot de passe PHP moderne

À partir de PHP 5.5, Password_Hash () et Password_verify () fournissent des interfaces de gestion de mot de passe plus simples et plus sûres, et la couche sous-jacente est également basée sur Crypt () . Il est recommandé d'utiliser de nouveaux projets en premier:

 $hash = password_hash($password, PASSWORD_BCRYPT);
$isValid = password_verify($password, $hash);

Si votre version CMS est plus ancienne et que vous devez utiliser Crypt () manuellement, la méthode ci-dessus est toujours une solution sûre.