Сброс пароля ASP.NET - проблемы безопасности?

Я видел различные вопросы по этой проблеме, но есть пара вопросов, которые не были заданы. Если пользователь забудет свой пароль, я бы хотел, чтобы он мог сбросить его, используя только свой адрес электронной почты (т. Е. Нет секретного вопроса / ответа). Пароль хранится как соленый хеш, поэтому восстановление невозможно. Вместо этого я бы хотел, чтобы пользователь ввел новый пароль после подтверждения того, что он запросил сброс.

Обычный метод, который был упомянут, это просто:

1) Создать случайное Guid / Криптографически сильное случайное число

2) Отправьте уникальный адрес, содержащий случайное число, на адрес электронной почты пользователя.

3) После подтверждения пользователю предлагается сменить пароль

Однако разве это не открыто дляMITM атака? Если отправка временных паролей по электронной почте через Интернет небезопасна, в чем разница между этим и простой отправкой уникального URL-адреса, по которому злоумышленник может перейти? Я где-то пропустил ключевой шаг, который сделает эту систему более безопасной (или есть лучший способ сброса пароля)?

Спасибо

Ответы на вопрос(3)

Ваш ответ на вопрос