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