Я пытаюсь выяснить, что такое безопасность, которую Drupal 6/7 использует по умолчанию для хранения паролей. Это MD5, AES, SHA? Я ничего не смог найти.
Drupal 8 и Drupal 7 используют SHA512 по умолчанию с солью. Они многократно запускают хэш через функцию хеширования PHP, чтобы увеличить вычислительную стоимость генерации окончательного хэша паролей (метод безопасности, называемый растяжением ).
С Drupal 8 реализация объектно-ориентированная. Существует PasswordInterface, который определяет хэш-метод. По умолчанию реализация этого интерфейса находится в классе PhpassHashedPassword . Этот хэш- метод класса вызывает метод crypt, передаваемый в SHA512 в качестве алгоритма хэширования, пароля и генерируемой соли. Метод crypt класса является почти таким же, как метод _password_crypt () Drupal 7.
С Drupal 7 реализация разделяется на пару глобальных функций: user_hash_password () и _password_crypt () .
Drupal 6 использует MD5 без соли. Соответствующей функцией является user_save () .
Вот пример хеша из Drupal 7:
msgstr "
Символами 0-2 являются тип ($ S $ – Drupal 7)
Затем двоичный результат преобразуется в строку с использованием base64.
$ count = 1 << $ count_log2;
$ hash = hash ($ algo, $ salt. $ password, TRUE);
do {$ hash = hash ($ algo, $ hash. $ password, TRUE);
} while (- $ count);
Весь процесс можно найти в: mydrupalsite \ includes \ password.inc
Его можно проверить внутри 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».
Это MD5, и, насколько я понимаю, нет никакого соления. Изменить – это drupal 6. Для drupal 7 используется более продвинутое хеширование. Хорошая статья об этом здесь – http://joncave.co.uk/2011/01/password-storage-in-drupal-and-wordpress/