Подтвердить что ты не робот

Что такое метод шифрования паролей по умолчанию Drupal?

Я пытаюсь выяснить, что такое безопасность, которую Drupal 6/7 использует по умолчанию для хранения паролей. Это MD5, AES, SHA? Я ничего не смог найти.

4b9b3361

Ответ 1

Drupal 8 и Drupal 7 используют SHA512 по умолчанию с солью. Они многократно запускают хэш через PHP hash, чтобы увеличить вычислительную стоимость генерации окончательного хэша паролей (метод безопасности, называемый stretching).

С Drupal 8 реализация объектно-ориентированная. Существует PasswordInterface, который определяет хэш-метод. По умолчанию реализация этого интерфейса находится в классе PhpassHashedPassword. Этот метод класса hash вызывает crypt метод, передаваемый в SHA512 в качестве алгоритма хеширования, пароля и генерируемой соли. Метод crypt класса почти такой же, как метод Drupal 7 _ password_crypt().

С Drupal 7 реализация разделяется на пару глобальных функций: user_hash_password() и _ password_crypt().

Drupal 6 использует MD5 без соли. Соответствующая функция user_save().

Ответ 2

Вот пример хеша из Drupal 7:

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

  • Символы 0-2 - это тип ($ S $- Drupal 7)

  • Символ 3 - это число раундов log2 (X) в зависимости от положения char в этом списке: './0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz' Итак, в нашем примере "D" отобразится 15
  • Символы 4-11 - это СОЛЬ
  • Остальное - хэш SHA512 с использованием раундов 2 ^ X.
  • Затем двоичный результат преобразуется в строку с использованием base64.

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

Весь процесс можно найти в: mydrupalsite\включает\password.inc

Ответ 3

Он может быть проверен внутри 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);
}

В нем четко написано, что "//Обычный пароль Drupal 7 с помощью sha512."

Ответ 4

Для ядра Drupal 6 этот метод использует MD5, и, насколько я понимаю, соление не используется. Для Drupal 7 используется более продвинутое хеширование. Хорошая статья об этом здесь - http://joncave.co.uk/2011/01/password-storage-in-drupal-and-wordpress/

Ответ 5

drupal 8 использует Phpass (модифицированная версия)

Drupal 7 использовать SHA-512 + соль

drupal 6 и предыдущая версия использовали md5 без соли