"Забыли пароль" дросселирование
У меня есть система "забыли пароль", которая отправляет пользователю электронное письмо со ссылкой на сброс. Вопрос: Как я могу предотвратить злоупотребление этой системой? Как я могу убедиться, что люди не используют его для спама людей в почтовых ящиках, но все еще могут использовать его для людей, которые в нем нуждаются?
5 ответов:
При отправке сообщения электронной почты для восстановления запишите время, в которое оно было отправлено. Если есть еще какие-либо/слишком много запросов на восстановление в течение заданного интервала времени (15 минут? 6 часов? день?), распечатайте сообщение и не отправляйте его по электронной почте.
Запрашивать зарегистрированный адрес электронной почты, а не имя пользователя? Это гораздо менее вероятно, чтобы быть известным злоумышленнику.
Кроме того, имейте поле TimeOfLastReset в таблице пользователей и обновляйте его всякий раз, когда вы отправляете электронное письмо. Если CurrentTime-TimeOfLastReset слишком мал, то не отправляйте.
1) Вы должны знать свой адрес электронной почты (а не только имя пользователя) 2) Вы можете сбросить пароль только один раз в промежуток времени 3) чтобы сбросить не работает сразу, вы должны нажать на ссылку в Почте
Не думайте, что он действительно может быть использован спамерами.
Для спамера автоматическое сообщение (с фиксированным содержанием), отправленное пользователю, бесполезно.
Однако вы можете добавить идентификатор сеанса в скрытое поле и проверить его при отправке. Или добавьте в форму скрытое (
disply: none
) поле сname="message"
и пустым значением. И проверьте, если он все еще пуст на форме отправить.Пусть пользователь одновременно заполнит свое имя пользователя и адрес электронной почты и проверит его.
Если вы использовали электронную почту в качестве логина, это не должно быть большой проблемой, так как не все будут знать свою электронную почту, и тот факт, что для того, чтобы они могли получить сброс, их электронная почта должна совпадать в базе данных. Поэтому он будет отправлен и сброшен только в том случае, если кто-то введет действительное электронное письмо.