Argon2id/bcrypt, политика сложности/breach check (Have I Been Pwned API), безопасный reset через одноразовый токен с TTL в БД, инвалидация сессий после смены пароля, уведомление на email.
Разбор
- Reset token — random, одноразовый, короткий TTL, не в URL логов прокси.
- Не раскрывайте, зарегистрирован ли email, одинаковым ответом UX.
- MFA снижает ценность украденного пароля.
- Запрет повторного использования последних N паролей — по политике.
Итог
Хранение + reset + сессии после смены — единый контур защиты учётки.