2016-07-16 3 views
0

Как все знают, что Drupal хранит пароль, используя SHA2-метод, который включает в себя шифрование + Hashing + Salt на нем.Миграция паролей - Drupal SHA2 в PHP MD5 Версия

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

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

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

+1

Нет, нет никакого способа конвертировать их без взаимодействия с пользователем. Является ли новая система настолько заблокированной, что вы не можете просто использовать такое же хеширование, как и старое?MD5 небезопасен, и SHA1 также вызывает сомнения. –

+0

Мы не хотим, чтобы кто-либо из наших пользователей сбросил свои пароли. Поскольку новая система разработана нами, мы имеем полный контроль над выбором алгоритма для наших паролей. Все дело в том, что наши пароли, которые были в Drupal, не работают в версии на основе mysql. –

+0

Я не понимаю «совместимый с MySQL». База данных просто сохраняет значения, как она влияет на аутентификацию? Не происходит ли аутентификация в вашем коде? –

ответ

3

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

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

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

1

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

Дополнительную информацию о форматах паролей можно найти, например, в this question.

0

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

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

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

0

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

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

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

Смежные вопросы