У меня есть существующий, не основанный на фреймворке сайт PHP / MySQL. Он имеет простую модель безопасности с таблицей пользователей с именами пользователей и хешированными (MD5) паролями.
В настоящее время я работаю над "версией 2" этого сайта, на этот раз используя Symfony с Doctrine. Новая версия работает нормально, и я использую плагин sfDoctrineGuard для управления пользователями.
Я бы хотел перенести своих существующих пользователей в новое приложение с минимальными усилиями, сохранив их существующие имена пользователей и пароли. Однако моя главная проблема заключается в том, что я хотел бы изменить хэш пароля, который я использую.
Текущий сайт использует несоленые хеши паролей MD5 *. Я уже выяснил, как перенести пользователей в Symfony / sfDoctrineGuard, сохранив при этом существующий алгоритм (предоставив свою собственную функцию «алгоритма» для несоленого MD5.) Но несоленый md5 явно не идеален.
Итак, мой вопрос, учитывая, что группа пользователей может успешно перейти на пользователей sfDoctrineGuard с помощью моего пользовательского алгоритма хеширования пароля обычного MD5, есть ли способ преобразовать этих пользователей, чтобы они использовали стандартный, соленый Алгоритм SHA1 sfDoctrineGuard?
Я полагаю, что я смогу делать это только для каждого пользователя, когда каждый пользователь входит в систему, поскольку у меня будет единственный открытый пароль пользователя для повторного хеширования. Я предполагаю, что мне нужно подключиться к чему-то в точке «этот пользователь только что успешно вошел с этим паролем», чтобы я мог затем установить алгоритм пользователя, соль и пароль для новой системы SHA1 и сохранить пользователя обратно в базы данных без них, даже не зная об этом.
Я немного покопался и не могу найти способ переопределить или подключить систему входа в систему sfDoctrineGuard (в частности, sfGuardSecurityUser, я думаю?) В нужной точке. Ну, не без взлома с фактическими файлами плагинов, которые кажутся злыми.
Могут ли какие-нибудь эксперты Symfony / sfDoctrineGuard показать мне правильное направление?
* Не смотри на меня так, это был мой первый сайт! И, по крайней мере, я не сохранил их в открытом виде ...