PHP и восстановление пароля

Так что я планирую использовать phpass для хэширования паролей для моей системы аутентификации в php. У меня такой вопрос: как лучше, когда кто-то просит восстановить свой пароль, потому что он забыл его? Вы бы внедрили систему вопросов / ответов и позволили бы им сбросить ее на сайте? Или вы временно сбросили бы их пароль со случайной строкой пароля и отправили бы им по электронной почте? Требование изменить их при следующем входе в систему? Или есть другой, лучший подход?

2 ответа

Решение

Запроса / ответов может быть недостаточно, если пользователь выбирает легко угадываемые вопросы или злоумышленник хорошо знает жертву. Многие громкие сайты используют информацию, предоставленную первоначальным пользователем: адрес электронной почты. Отправьте ссылку для сброса пароля на адрес электронной почты и разрешите пользователю сбросить пароль, перейдя по ссылке.

Обратитесь к ответу Джея в разделе " Рекомендации по внедрению восстановления пароля", чтобы узнать, как сделать восстановление пароля более безопасным и почему вопросы безопасности являются плохой идеей.

У Брюса Шнайера также есть мысли на эту тему.

Я бы порекомендовал то, что предложил Дункан.

Однако, что вы не должны делать:

Отправьте пароль - ведь, как уже было сказано, у вас его нет.

Создайте новый временный пароль - это не только небезопасно, как отправка пароля, но также приводит к возможности атаки типа "отказ в обслуживании". Я могу зайти на сайт, притвориться вами, запросить новый пароль, а затем (если вы не проверили свою электронную почту) вы не можете войти в систему, не знаете почему и должны запросить новый пароль.,

Маркер - это, вероятно, путь. Получив его, вы получаете уведомление о запросе забытого пароля, но не предпринимаете никаких действий без вашего подтверждения. Вы также сделаете это одноразовым токеном с относительно коротким сроком действия, чтобы ограничить риск.

Во всяком случае, следует использовать секретный вопрос, чтобы пользователь мог инициировать запрос на сброс пароля. IE Вы должны предоставить свой адрес электронной почты и ответ на секретный вопрос, чтобы отправить запрос на сброс пароля.

Другие вопросы по тегам