Я проектирую некоторые функции забытого пароля в приложении ASP.NET, и у меня возник вопрос о том, как лучше защитить конечную точку, где пользователь может сбросить свой пароль.
Как я понимаю, это работает(примерно) следующее:
- Пользователь нажимает «Забыли пароль» в форме входа
- Пользователь попадает на экран, где он вводит свою электронную почту, связанную с его учетной записью
- Затем пользователь выводится на экран, где он может ответить на некоторые вопросы безопасности (требуется моей компанией)
- После правильного ответа на вопросы пользователю будет отправлено электронное письмо со ссылкой.
- Пользователь нажимает на ссылку в своем электронном письме, которая приведет его к форме сброса пароля
Мой вопрос здесь, как я могу гарантировать, что когда кто-то придет к этой форме сброса пароля, чтоони пришли туда, нажав на эту ссылку электронной почты, и не просто вручную набрали URL, чтобы попасть туда?
Одно из решений, о котором я подумал, - это зашифровать некоторые данные и добавить их в качестве параметра вURL внутри письма.Поэтому, когда они нажимают на эту ссылку, я могу расшифровать данные и убедиться, что они пришли с действительного электронного письма, прежде чем заполнять форму.Но я не уверен, что лучший способ сделать это.