Скрытие сообщения «e-mail занят» по умолчанию при регистрации

Фон

При текущих настройках по умолчанию, если пользователь регистрирует аккаунт с уже зарегистрированным адресом электронной почты, форма регистрации сообщает об этом:

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

Аналогичные изменения касаются также сброса пароля. При отключённой настройке форма сразу сообщает, что адрес электронной почты уже есть в системе:

При включённой настройке эта информация не раскрывается:

Почему мы это меняем?

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

Не повлияет ли это негативно на легитимных пользователей?

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

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

Но мне нравится старая настройка по умолчанию

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

Примечание: мы рассматриваем возможность скрытия этого параметра сайта со страницы настроек администратора в будущем.

10 лайков

Что происходит в случае, когда пользователь ошибочно вспоминает адрес электронной почты, который использовал для регистрации?

Например, предположим, что пользователь считает, что зарегистрировался как example@gmail.com, но на самом деле он зарегистрировался как example@yahoo.com. Он попытается сбросить пароль, указав адрес example@gmail.com, но учётной записи с таким адресом не существует.

Если учётная запись совпадает с ted@discourse.org, вы вскоре получите письмо с инструкциями по сбросу пароля.

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

Вместо этого сообщение должно просто гласить: «Вы вскоре получите письмо с инструкциями по сбросу пароля», а пользователь должен получить письмо с объяснением: «Кто-то запросил сброс пароля для example@gmail.com, но учётной записи с таким адресом электронной почты не существует».

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

5 лайков

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

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

5 лайков

Злоумышленники уже могут делать это, просто регистрируя новые учётные записи. Если атакующий знает 100 000 адресов электронной почты, он может зарегистрировать 100 000 учётных записей, и Discourse отправит каждому из них письмо с активацией, которое каждый пользователь сможет пометить как спам.

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

Эта атака не является проблемой для большинства сайтов, но если вы обеспокоены, вам следует использовать плагин Discourse hCaptcha, который увеличивает затраты для атакующего. (Meta не использует его; большинство форумов, размещённых на Discourse, также не используют его.)

Я считаю, что если Discourse примет моё предложение начать отправлять письма с сообщением «Не удалось сбросить пароль, ваша учётная запись не существует» на адреса учётных записей, которых не существует, то логично будет расширить работу плагина hCaptcha и на форму сброса пароля, а не только на форму регистрации. (При этом я сам всё равно не стал бы использовать hCaptcha.)

3 лайка

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

Разве не так?

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

Таким образом, я автоматически понимаю, что имеет место один из двух вариантов: либо я ввёл неверный адрес, либо сайт работает некорректно.

Мои варианты теперь: попробовать другой адрес или связаться с администратором сайта.

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

1 лайк

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

1 лайк