При текущих настройках по умолчанию, если пользователь регистрирует аккаунт с уже зарегистрированным адресом электронной почты, форма регистрации сообщает об этом:
Мы меняем настройку по умолчанию так, чтобы эта информация не раскрывалась. Теперь форма регистрации будет выглядеть следующим образом, независимо от того, зарегистрирован ли адрес электронной почты:
Злоумышленник может использовать эту информацию для проведения атаки перебора учётных записей, чтобы узнать, существуют ли определённые пользователи на данном форуме. Это может позволить им целенаправленно атаковать этих пользователей с помощью фишинга.
Не повлияет ли это негативно на легитимных пользователей?
В данном случае речь идёт о ситуации, когда пользователь забыл, что у него уже есть аккаунт, и пытается зарегистрироваться или сбросить пароль, используя тот же адрес электронной почты. Такие случаи относительно редки. Даже в этом случае пользователь просто получит письмо с уведомлением о том, что у него уже есть аккаунт.
В итоге данное изменение не влияет на способность легитимных пользователей регистрироваться или получать доступ к своим аккаунтам.
Но мне нравится старая настройка по умолчанию
Если вы ранее изменяли эту настройку, новое значение по умолчанию не перезапишет вашу пользовательскую настройку. Если вы хотите вернуться к старому значению по умолчанию, установите параметр hide_email_address_taken обратно в false.
Примечание: мы рассматриваем возможность скрытия этого параметра сайта со страницы настроек администратора в будущем.
Что происходит в случае, когда пользователь ошибочно вспоминает адрес электронной почты, который использовал для регистрации?
Например, предположим, что пользователь считает, что зарегистрировался как example@gmail.com, но на самом деле он зарегистрировался как example@yahoo.com. Он попытается сбросить пароль, указав адрес example@gmail.com, но учётной записи с таким адресом не существует.
Если учётная запись совпадает с ted@discourse.org, вы вскоре получите письмо с инструкциями по сбросу пароля.
Если в таком случае пользователь просто не получит письмо, он никогда не узнает, что указал неверный адрес электронной почты, и не будет знать, когда и следует ли попробовать снова с другим адресом.
Вместо этого сообщение должно просто гласить: «Вы вскоре получите письмо с инструкциями по сбросу пароля», а пользователь должен получить письмо с объяснением: «Кто-то запросил сброс пароля для example@gmail.com, но учётной записи с таким адресом электронной почты не существует».
Это не позволит никому проводить перебор учётных записей, но позволит пользователю узнать, что он указал неверный адрес электронной почты, и попробовать другой.
Проблема этого подхода заключается в том, что он позволяет злоумышленникам инициировать отправку писем на адреса, которые никогда не взаимодействовали с вашим экземпляром или которые не существуют.
Это может привести к значительному увеличению количества отправленных писем, что потенциально повлечёт за собой высокие финансовые затраты. Кроме того, это может вызвать резкий рост жалоб пользователей на спам и увеличение показателя отказов, что, в свою очередь, может привести к тому, что такие операторы, как Gmail, внесут ваши письма в чёрный список.
Злоумышленники уже могут делать это, просто регистрируя новые учётные записи. Если атакующий знает 100 000 адресов электронной почты, он может зарегистрировать 100 000 учётных записей, и Discourse отправит каждому из них письмо с активацией, которое каждый пользователь сможет пометить как спам.
Отправка писем с сообщением «Не удалось сбросить пароль, ваша учётная запись не существует» на адреса учётных записей, которых не существует, не облегчает и не усложняет эту атаку.
Эта атака не является проблемой для большинства сайтов, но если вы обеспокоены, вам следует использовать плагин Discourse hCaptcha, который увеличивает затраты для атакующего. (Meta не использует его; большинство форумов, размещённых на Discourse, также не используют его.)
Я считаю, что если Discourse примет моё предложение начать отправлять письма с сообщением «Не удалось сбросить пароль, ваша учётная запись не существует» на адреса учётных записей, которых не существует, то логично будет расширить работу плагина hCaptcha и на форму сброса пароля, а не только на форму регистрации. (При этом я сам всё равно не стал бы использовать hCaptcha.)
Да, это верно. Я рассматривал только этот конкретный случай, не учитывая другие области, где это уже возможно и, как оказалось, полностью нереалистично предотвратить.
Я забыл пароль и хочу получить доступ к этому сайту. Я ввожу тот адрес, который, как мне кажется, правильный.
Я не получаю ссылку для сброса пароля.
Таким образом, я автоматически понимаю, что имеет место один из двух вариантов: либо я ввёл неверный адрес, либо сайт работает некорректно.
Мои варианты теперь: попробовать другой адрес или связаться с администратором сайта.
Теперь, если следовать вашему предложению, я получу письмо с сообщением, что аккаунт не существует. Мои варианты: попробовать другой адрес или связаться с администратором сайта. Это тот же самый результат, без дополнительных шагов.