Должны ли мы хэшировать токены сброса пароля и хранить их в базе данных?
Я выполняю механизм сброса пароля для моего приложения ASP.NET.
и мне интересно, потому что, если кто-то получит доступ к моей базе данных, он может легко прочитать токены сброса пароля и изменить пароли пользователей, не должен ли я хэшировать "токены сброса пароля" и затем сохранить их в своей базе данных?
Примечание: я говорю о "токенах сброса пароля", а не о "паролях"
3 ответа
Да, я бы порекомендовал вам хешировать сброшенные токены и просто сохранять их в базе данных.
Также после их использования удаление записи также будет хорошей практикой. Вы можете использовать AesCryptoServiceProvider или другого поставщика криптографии для выполнения этой работы. Есть много примеров кода о том, как их использовать.
Если "токен сброса пароля" позволяет кому-либо сбросить пароль с другой текстовой информацией, то он фактически совпадает с паролем и должен рассматриваться как таковой.
Заставьте их истечь на несколько минут или часов, и относитесь к ним как к секретам, потому что они есть.
Я рекомендую это делать и считаю хорошей практикой это делать.
У вас уже должна быть инфраструктура, чтобы сделать это довольно легко, как вы должны делать это уже с паролями.
Выгоды:
- Дешево внедрить (существующая инфраструктура уже должна быть на месте)
- Более безопасный (меньше места для проблем безопасности)
- Спокойствие духа