47 votes

Quelle est la méthode de cryptage des mots de passe par défaut de Drupal ?

J'essaie de savoir quelle est la sécurité que Drupal 6/7 utilise par défaut pour stocker les mots de passe. Est-ce MD5, AES, SHA ? Je n'ai rien trouvé.

6 votes

" Je n'ai rien trouvé. Ok, normalement, je ne fais pas de commentaires du type "avez-vous essayé Google", mais là, c'est ridicule. essayez pour trouver quelque chose ? (Conseil : copiez et collez le titre de votre question dans un champ de recherche Google).

16 votes

Je l'ai fait. Et ça m'a amené à Stack Overflow. :)

76voto

CalebD Points 3213

Drupal 8 et Drupal 7 utilisent SHA512 par défaut avec un sel. Ils font passer le hachage par la fonction dièse de nombreuses fois afin d'augmenter le coût de calcul de la génération du hachage final d'un mot de passe (une technique de sécurité appelée étirement ).

Avec Drupal 8, l'implémentation est orientée objet. Il existe un PasswordInterface qui définit une méthode de hachage. L'implémentation par défaut de cette interface se trouve dans le PhpassHashedPassword classe. Cette classe dièse appelle la méthode crypte en indiquant SHA512 comme algorithme de hachage, un mot de passe et un sel généré. La méthode de cryptage de la classe est presque la même que celle de Drupal 7. _password_crypt() méthode.

Avec Drupal 7, l'implémentation est divisée en deux fonctions globales : user_hash_password() y _password_crypt() .

Drupal 6 utilise le MD5 sans sel. La fonction concernée est la suivante user_save() .

1 votes

Il est intéressant de noter que Drupal 7/8 utilise une version modifiée de phpass qui se trouve sous l'onglet Hachage sécurisé des mots de passe module.

36voto

Ray Hulha Points 1072

Voici un exemple de hachage provenant de Drupal 7 :

  • "pass" : "$S$Dxl65W9p07LfQU7jvy5CnsyDpMoLujiAgzy123khcg1OJi/P9pKS"

  • Les caractères 0-2 sont le type ( $S$ est Drupal 7 )

  • Le caractère 3 est le nombre de tours log2 (X) basé sur la position du caractère dans cette liste : './0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz' Donc, dans notre exemple, 'D' correspondrait à 15.

  • Les caractères 4 à 11 sont les caractères SALT

  • Le reste est un hachage SHA512 utilisant 2^X rounds.

  • Le résultat binaire est ensuite converti en chaîne de caractères à l'aide de base64.

    $count = 1 << $count_log2 ;
    $hash = hash($algo, $salt . $password, TRUE) ;
    do { $hash = hash($algo, $hash . $password, TRUE) ;
    } while (--$count) ;

Le processus complet peut être trouvé dans : mydrupalsite \includes\password.inc

11voto

Tarun Gupta Points 1369

Il peut être vérifié à l'intérieur de www \includes\password.inc

function user_check_password($password, $account) {
  if (substr($account->pass, 0, 2) == 'U$') {
    // This may be an updated password from user_update_7000(). Such hashes
    // have 'U' added as the first character and need an extra md5().
    $stored_hash = substr($account->pass, 1);
    $password = md5($password);
  }
  else {
    $stored_hash = $account->pass;
  }

  $type = substr($stored_hash, 0, 3);
  switch ($type) {
    case '$S$':
      // A normal Drupal 7 password using sha512.
      $hash = _password_crypt('sha512', $password, $stored_hash);
      break;
    case '$H$':
      // phpBB3 uses "$H$" for the same thing as "$P$".
    case '$P$':
      // A phpass password generated using md5.  This is an
      // imported password or from an earlier Drupal version.
      $hash = _password_crypt('md5', $password, $stored_hash);
      break;
    default:
      return FALSE;
  }
  return ($hash && $stored_hash == $hash);
}

Il a été clairement écrit que "// Un mot de passe Drupal 7 normal utilisant sha512".

5voto

David Gillen Points 1032

Pour Drupal 6 core, la méthode utilise MD5 et, si j'ai bien compris, il n'y a pas de salage utilisé. Pour Drupal 7, un hachage plus avancé est utilisé. Un bon article à ce sujet ici - http://joncave.co.uk/2011/01/password-storage-in-drupal-and-wordpress/

0 votes

Drupal 6 n'est plus soutenu par la communauté, mais il existe un module contributif pour que le noyau de Drupal 6 utilise le mécanisme PHPASS, beaucoup plus puissant : drupal.org/projet/phpass

0voto

user889030 Points 909

Drupal 8 utilise Phpass (version modifiée)

drupal 7 utilise SHA-512 + sel

drupal 6 et les versions précédentes utilisaient md5 sans sel.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X