mysql — Миграция паролей — Drupal SHA2 в версию PHP MD5

Как все знают, Drupal хранит пароль, используя метод SHA2, который включает в себя Encryption + Hashing + Salt.

У меня есть список паролей, которые в настоящее время используются некоторыми из моих клиентов в Drupal. Поскольку мы перевели всю систему на Custom PHP, мы не можем использовать одни и те же пароли. И мы действительно не хотим просить всех в базе данных генерировать новые пароли.

Если есть какой-либо способ, где мы могли бы изменить все пароли, которые есть в SHA2 (шифрование Drupal — 512), чтобы поддержать нашу новую систему, которая в настоящее время имеет MD5 / SHA1 (база данных PHP Mysql).

Любая помощь будет оценена.

0

Решение

Вы действительно не хотите идти в MD5. Он мёртв, насколько способ хеширования паролей идет. Вы должен двигаться к password_hash и что-то вроде Bcrypt в абсолютном минимуме.

Помните, что когда кто-то входит в систему и вы проверяете, что его пароль правильный, у вас есть шанс обновить способ хэширования пароля в базе данных. Если они используют слабый метод, переключитесь на сильный и сохраните их запись пользователя. Никто не узнает, что ты сделал.

Примерно через год вы всегда можете принудительно истечь все пароли старого формата, если вас беспокоит эта давняя ответственность. Все ваши активные пользователи не будут затронуты.

3

Другие решения

Я бы не советовал менять пароль на другой формат, особенно на MD5. Поскольку у вас уже есть пароли, вы можете реализовать хеширование паролей в Drupal в своем собственном приложении и просто продолжать использовать существующие пароли.

Более подробную информацию о форматах паролей можно найти, например, в этот вопрос.

1

Я думаю, что вы должны использовать «переход». Например, используйте вашу новую систему, но оставьте старый пароль в базе данных.

В своем коде при входе в систему вы получаете пароль (например: $_POST['pwd']) и зашифровать его, используя сильный алгоритм (не MD5). Затем вы можете вставить его в новое поле вашей базы данных.

Итак, ваша новая база данных может иметь поле old_pwd, содержащее старый пароль, и поле pwd, содержащее новый пароль, используя ваш новый алгоритм. По моему мнению, это самый простой способ сделать эту миграцию.

0

Код проверки пароля очень похож в Drupal 7 и 8 и его легко заимствовать, он не имеет сильной зависимости от компонента Drupal. Должно быть довольно легко добавить поддержку хешей Drupal в ваш код проверки пароля. Позволяет использовать аутентификацию, используя свой пароль, сохраняя хеш-коды Drupal в вашей базе данных.

Чтобы перейти на новый алгоритм хэширования, просто повторно хэшируйте пароли при успешной аутентификации. Таким образом, старые хеши будут заменены со временем.

Drupal имеет аналогичный механизм для обеспечения прозрачных обновлений или старых хэшей MD5. Посмотрите на user_check_password () а также user_needs_new_hash () чтобы увидеть, как это можно сделать.

0
По вопросам рекламы [email protected]