PHP и восстановление пароля - PullRequest
1 голос
/ 28 июня 2011

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

Ответы [ 2 ]

2 голосов
/ 28 июня 2011

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

0 голосов
/ 28 июня 2011

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

Брюс Шнайер также имеет мысли по этому вопросу.

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

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

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

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

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

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

...