2013-06-20 4 views
0

Для восстановления пароля мое приложение vb.net отправляет электронное письмо пользователю со ссылкой в ​​следующем формате.Email пользователя новая ссылка для создания пароля

http://<password-reset page url>?id=<userid>&tpr=<times Password Reset>&time=<time when the link was generated>

Times Password Reset это количество времени пользователь использовал ссылку для сброса пароля для сброса пароля. Это значение в базе данных, и значение в строке запроса сопоставляется. Чтобы гарантировать, что одна и та же ссылка сброса пароля не может использоваться дважды, чтобы сбросить пароль. Time используется для проверки того, что до того, как используется ссылка, прошло не более 24 часов. И userid используется для идентификации пользователя.

Если все условия совпадают, пользователю предлагается изменить его пароль. Все поля в зашифрованном виде с AES.

Я хотел знать, защищен ли этот метод?

ответ

1

Быстрый ответ: Нет

Забудьте все параметры, которые вы используете в URL. Просто создайте одну случайную, недопустимую строку (например, UUID) и поместите ее в URL как параметр. Затем отправьте этот URL-адрес пользователю через адрес электронной почты, который вы сохранили для него. Храните UUID вместе со всеми параметрами, которые у вас есть в своем URL-адресе, в вашей базе данных. Когда пользователь нажимает на ссылку, проверьте все параметры (временную метку и т. Д.) И дайте ему установить новый пароль.

Se также OWASP Cheat Sheet on Password Reset.

+0

Это на самом деле довольно хорошее решение, и я использую его сам. +1 – Skindeep2366

Смежные вопросы