Должны ли мы хэшировать токены сброса пароля и хранить их в базе данных?

Я выполняю механизм сброса пароля для моего приложения ASP.NET.

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

Примечание: я говорю о "токенах сброса пароля", а не о "паролях"

3 ответа

Решение

Да, я бы порекомендовал вам хешировать сброшенные токены и просто сохранять их в базе данных.

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

Если "токен сброса пароля" позволяет кому-либо сбросить пароль с другой текстовой информацией, то он фактически совпадает с паролем и должен рассматриваться как таковой.

Заставьте их истечь на несколько минут или часов, и относитесь к ним как к секретам, потому что они есть.

Я рекомендую это делать и считаю хорошей практикой это делать.

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

Выгоды:

  • Дешево внедрить (существующая инфраструктура уже должна быть на месте)
  • Более безопасный (меньше места для проблем безопасности)
  • Спокойствие духа
Другие вопросы по тегам