Обычно в формах входа отображается сообщение «Неверный адрес электронной почты или пароль», когда пользователь неправильно вводит данные своей учетной записи, а не просто «неверный пароль». Это, среди прочего, связано с тем, что информирование пользователей о том, что электронная почта действительно зарегистрирована на этом сайте, представляет собой уязвимость в системе безопасности. Вы можете прочитать об этом в этот вопрос.

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

Есть ли способ избежать разглашения этой потенциально опасной информации?

Я могу думать только о возможном ограничении количества попыток отправки электронного письма, поскольку это не должно мешать нормальному взаимодействию с пользователем.

11
Community 13 Апр 2017 в 15:32
Я не знаю, что произойдет, если я попытаюсь увидеть свою учетную запись, вы скажете, что адрес электронной почты или пароль не существуют.
 – 
Ibrahim abubakar
6 Дек 2020 в 21:06

3 ответа

Лучший ответ

Самый простой способ реализовать это - сказать

If a matching account was found an email was sent to user@email.com to allow you to reset your password.

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

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

21
Doyle Lewis 18 Ноя 2015 в 00:04
DigitalOcean делает это независимо от того, что вы вводите (даже если это неверный адрес электронной почты — неправильный формат), вы получаете общее сообщение «Если указанный вами адрес электронной почты существует в нашей системе, мы отправили на него ссылку для сброса пароля».
 – 
Drown
18 Ноя 2015 в 00:08
Вы можете столкнуться с проблемами, когда электронное письмо может оказаться в папке «Нежелательная почта/Спам» или, возможно, даже будет задержано. Пользователь будет продолжать вводить разные электронные письма с разочарованием, если он / она не получит электронное письмо от системы. (Я видел много подобных случаев в прошлом)
 – 
Igorek
18 Ноя 2015 в 00:09
Действительный пользователь будет демонстрировать такое же поведение независимо от того, какое сообщение вы ему показываете. Вы можете упомянуть в своем сообщении, что иногда электронные письма не приходят мгновенно и что проверка папки СПАМ/Нежелательная почта является хорошей идеей, но этот пользователь всегда будет просто предполагать, что что-то потеряно, и вернется и снова заполнит форму. Суть здесь в том, чтобы не допустить попадания всех данных в руки недействительных пользователей.
 – 
Doyle Lewis
18 Ноя 2015 в 00:14
@ДойлЛьюис. Я с уважением не согласен. Я мог бы быть исключением здесь, но я думаю, что это второстепенный опыт, чтобы я продолжал гадать. Если вы скажете им, что электронное письмо отправлено, они будут ожидать его получения. Если вы скажете им, что «если вы правильно угадали свой адрес электронной почты для входа, мы отправим вам электронное письмо» типа сообщения, вы заставите пользователя угадать и выполнить больше действий. Исходя из личного опыта, это очень расстраивает.
 – 
Igorek
18 Ноя 2015 в 00:26
Извините, я плохой пользователь, и у меня есть 6 адресов электронной почты, которые я использую для своих повседневных дел. Много раз, когда я забывал пароль для данного веб-сайта, я пробовал по крайней мере два из них, пока не получил один ответ. Однажды мне пришлось позвонить, чтобы удалить мою учетную запись и зарегистрироваться снова (поскольку она была зарегистрирована на адрес электронной почты, который я потерял). Нехорошо заставлять пользователя угадывать, правильно ли он ввел почту. И все это без учета опечатки пользователя. ОПЫТ лучше с большим количеством информации, но БЕЗОПАСНОСТЬ хуже. Это выбор между большим ОПЫТОМ или большой БЕЗОПАСНОСТЬЮ, но иногда вы не можете иметь и то, и другое.
 – 
Gabriel Fonseca
18 Ноя 2015 в 00:34

Вы можете внедрить контрольный вопрос (или два) в процесс «забыли пароль», который в основном будет действовать как пароль для получения/сброса вашего пароля. Таким образом, и введенный адрес электронной почты, и ответы на контрольные вопросы должны совпадать, подтверждая, что пользователь является законным.

2
dmoz 17 Ноя 2015 в 22:25

Я думаю, что вы сами ответили на свой вопрос по большей части. Я не думаю, что это плохая идея показать, что учетная запись, в которую вы пытаетесь войти, не может быть найдена по предоставленному имени для входа. Я бы предложил:

  • Показывать тип сообщения «Учетная запись не найдена», если логин неверный
  • Показывать тип сообщения «Не удалось войти», если логин найден по неверному паролю

На другие ваши вопросы:

  1. Да, можно показывать пользователю сообщение, если указанный адрес электронной почты не найден в системе.
  2. Да. Вам следует ограничить количество попыток из одного и того же источника и, в случае превышения, заблокировать источник на определенный период времени (некоторые делают это на 15 минут, некоторые веб-сайты блокируют на несколько часов и дольше).
  3. Да, внедрить проверку безопасности. Я во многом согласен с dmoz. Вместо того, чтобы задавать серию контрольных вопросов, используйте CAPTCHA или аналогичное решение для функции "забыли пароль".
-1
Igorek 17 Ноя 2015 в 23:07