сетевой веб-сайт, я хотел бы реализовать, забывают пароль. Я использую следующие шаги
Помогите мне, делаю ли я правильно или нет?
Есть ли какой-либо другой безопасный механизм для того же?
[РЕДАКТИРОВАНИЕ] Благодарит, я получил Ваш ответ. Действительно это - безопасный механизм. Но здесь я имею, немногие сомневаются
Помогите?
Я понимаю, зачем нужен CAPTCHA, но я бы использовал другой подход.
Для тех, кто считает, что вы должны сообщить пользователю, куда отправлено электронное сообщение, я категорически не согласен с этим. Это "утечка информации", даже если вы ограничите ее доменным именем. Например, скажем, что я зарегистрировался на JeffAtwoodEatsBabies.com как blowdart. Если бы Джефф запросил сброс пароля для меня, а вы показали регистрационный домен, то он бы увидел idunno.org. Это мой личный домен и, таким образом, Джефф знал бы, что пользователь blowdart, на самом деле, я. Это плохая плохая вещь. Я не должен регистрироваться с помощью hotmail или gmail или чего-то еще, чтобы защитить себя от вашего кода, показывающего почтовый домен всем и вся.
Кроме того, вы вообще не должны показывать сообщения об ошибках. Что бы ни случилось, имя пользователя на самом деле не зарегистрировано, или было сделано слишком много запросов, или упало небо, вы должны сказать пользователю, что процедура сброса пароля началась. Информирование пользователя о том, что учетной записи не существует - это еще одна утечка информации.
И последнее, что вы можете сделать - добавить CSRF-токен на страницу запроса на сброс пароля, чтобы он не мог быть изгнан с других веб-сайтов.
Followup
So to answer your further questions.
Я делал это недавно. Когда пользователь вводит свое имя пользователя или адрес электронной почты, мы генерируем уникальный маркер и отправляем его по электронной почте как часть ссылки. После получения этого электронного письма он нажимает на ссылку, автоматически входит в систему, попадает на экран моей учетной записи и предлагает сбросить пароль.
Конечно, это на 100% зависит от безопасности почтового клиента, но с точки зрения удобства использования это трудно превзойти.
.Существует множество способов реализации этого. Как вы уже говорили, генерация нового пароля и отправка его на зарегистрированный электронный адрес - это один из способов. Однако, я бы не советовал вам идти по этому пути, так как мой пароль сбрасывается каждый раз, когда кто-то пытается угадать мой пароль.
Вместо этого, лучшее, что я видел на сегодняшний день, это просто отправить письмо по электронной почте с ссылкой, которая начнет процесс сброса пароля. Вы даже можете сообщить пользователю, какой электронный адрес проверить, показав маскированную версию его электронного адреса, использованного при регистрации:
Электронное письмо было отправлено на
********
@hotmail.com. Пожалуйста, проверьте свой почтовый ящик, чтобы продолжить.
Не забывайте о тех из нас, кто может забыть, на какой электронный адрес был зарегистрирован - обычно несколько вопросов безопасности - отличный способ сделать эту информацию доступной.
.