См. Ответ Джея на Внедрение передового опыта восстановления пароля , чтобы узнать, как сделать восстановление пароля более безопасным и почему вопросы безопасности являются плохой идеей.
Брюс Шнайер также имеет мысли по этому вопросу.
Я бы порекомендовал, что Дункан предложил.
Однако, что вы не должныdo:
Отправьте пароль - потому что, как уже было сказано, у вас его нет.
Создайте новый временный пароль - это не только небезопасно, чем отправкапароль, это также приводит к возможности отказа в обслуживании атаки.Я могу зайти на сайт, притвориться вами, запросить новый пароль, а затем (если вы не проверили свою электронную почту) вы не можете войти в систему, не знаете почему и должны запросить новый пароль..
Маркер - это, вероятно, путь.Получив его, вы получаете уведомление о запросе забытого пароля, но не предпринимаете никаких действий без вашего подтверждения.Вы также можете сделать это одноразовым токеном с относительно коротким сроком действия, чтобы ограничить риск.
В любом случае следует использовать секретный вопрос, чтобы позволить пользователю инициировать запрос на сброс пароля.IE Вы должны предоставить свой адрес электронной почты и ответ на секретный вопрос, чтобы отправить запрос на сброс пароля.