Проверка пароля Moodle на внешнем скрипте

У меня Moodle 2.7. Хеши пользователей и пароли хранятся в таблице mdl_user. Я хочу создать внешний скрипт, который может проверять - правильно ли введены логин и пароль.

Как я вижу - в этой версии Moodle для генерирования хэша пароля используется некая функция php, например password_hash().

Моя версия PHP 5.4, поэтому я не могу использовать эту функцию. Поэтому я использую эту библиотеку https://github.com/ircmaxell/password_compat с этим кодом

$password_hash = password_hash( $password , PASSWORD_DEFAULT, array());

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

1 ответ

Решение

Если эта функция похожа на password_hash() Прирожденный к PHP, соль генерируется вместе с хешем, а соль рандомизируется. Из-за этого, сравнивая результаты 2 отдельных вызовов password_hash() не собираются совпадать.

Функция, которую вы ищете password_verify(), который принимает введенный пароль и хэш в базе данных. Если это возвращает true, то пароли совпадают.

Другие вопросы по тегам