Я хотел бы создать хэш-адрес сайта для использования в качестве соли при создании токенов для извлечения пароля. Я подпрыгивал вокруг stackoverflow, пытаясь понять, как это сделать.
Здесь reset процесс:
Когда пользователь запрашивает пароль reset email, код генерирует токен извлечения:
$token = hash_hmac('sha256', $reset_hash* , $site_hash)
* $reset_hash - это хеш, созданный с использованием функции phpass HashPassword(), сохраненной в таблице пользователя.
Затем я отправляю токен в URL-адрес на адрес электронной почты пользователей. Они щелкают перед временем токена через час. Я согласен с их представлением с маркером вызова, созданным на стороне сервера. Если он соответствует, то они вынуждены выбрать новый пароль, а затем войти в систему.
Я хотел бы знать лучший способ создания $site_key. Я думаю использовать другой хэш HMAC, который засевается случайными числами:
$site_key = hash_hmac('sha256', MCRYPT_DEV_RANDOM, MCRYPT_DEV_RANDOM);
Это создает что-то вроде этого:
98bb403abbe62f5552f03494126a732c3be69b41401673b08cbfefa46d9e8999
Будет ли это случайным образом использоваться для этой цели? Могу ли я это преувеличивать или приближаться к нему неправильно?
Я был вдохновлен использовать HMAC этим ответом
РЕДАКТИРОВАТЬ: Я стараюсь избегать "секретного вопроса", на который настаивают некоторые из моих коллег, поэтому я хотел бы, чтобы ссылка reset обеспечила один шаг к сбросу пароля. Поэтому я обеспокоен тем, что этот процесс достаточно безопасен для защиты системы, содержащей конфиденциальную информацию.
RESOLVED, пока: Я собираюсь пойти с nonce, как описано The Rook как токен reset. Спасибо всем за комментарии и отзывы.