Protecting against gmail dot trick in Discourse

My forum just receive a large number of spaming user registration.
He/She using Gmail dot tricks ( http://www.makeuseof.com/tag/1-awesome-gmail-tip-you-dont-know-about-seriously/) to create this large number of email account.

Can you prohibid this trick ?

My discourse is using Cloudflare at a CDN and DNS provider, Discourse can’t work fine caused the IP thing.

Couldn’t you ban their IP instead?

Hum, I’m using Cloudflare for CDN, and discourse only see Cloudflare, not user’s IP. (in Wordpress, Cloudflare has an plugin to pass the user IP to website)

3 лайка

At vB we used to get literally thousands of bot “seed” accounts like
aliasg.maila.ccount
alia.sgmai.laccount
ali.asg.mailacco.unt
alias.g.m.ailaccount
al.iasgmai.lacc.ount
… etc. ad nauseum

We eventually had a plugin written to deal with them

1 лайк

Yeah you’re going to need to turn that off, or figure out how to get CloudFlare to send proper headers for the passthrough IP.

1 лайк

Yes. I’m working on that by config Nginx.
Cloudflare actually sends user’s IP via header HTTP_CF_CONNECTING_IP

But prohibid gmail dot trick is useful too.

1 лайк

You really need to get IP passed through correctly otherwise you are really screwed. That’s about the only effective way to stop spammers, if they are clever.

1 лайк

While in this case banning the IP is the right thing to do, I think there is merit in being able to stop user.name@gmail.com and username@gmail.com from being both registered as two different users at any given discourse forum.

No sane administrator should allow this behaviour (from gmail) and maybe we could have an option to extend this prohibition to other email providers as well.

It would need a simple list like ‘@gmail.com’, ‘@anotherprovidder.com’ and then it would check for registered users by removing the dot or any other relevant character (could have a list as well) to avoid users that want to have two or more accounts.

Maybe a plugin with this functionality would be the best solution.

5 лайков

Definitely make it optional if you do it at all. I depend on this trick for troubleshooting!

3 лайка

Нам приходится иметь дело с наплывом таких регистраций и спама, который они оставляют. :man_supervillain:

mycoolgmailaddress4spam+unlimitedcombinationslol@gmail.com
m.ycoo.lgm.ailaddress4s.pam@gmail.com

К сожалению, мы бессильны против таких регистраций. Единственная защита — не стать целью для спамеров, обладающих хотя бы минимальными навыками.

Объективно невозможно заблокировать спамера, у которого достаточно IP-адресов, от создания 100 000 аккаунтов с использованием одного адреса Gmail на любом стандартном форуме Discourse, применяя подобные уловки.

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

Странно, что у вашего сайта возникла такая серьёзная проблема, ведь за последние 4 года у нас, среди примерно 1000+ размещённых клиентов, я не припомню ни одного подобного случая?

@codinghorror Вы приписываете это достаточной защите от этой распространённой техники спамеров или тому, что эти сайты не являются мишенями для спамеров? Получают ли эти сайты регулярные большие объёмы попыток спам-регистраций любого рода, которые блокируются защитой?

Это сильно зависит от ниши, объёмов трафика и того, подходит ли сайт для их кампаний прямого отклика. Спамер, который может держать свои посты в верхней части списка, по сути получает фантастическое рекламное место за бесценок. Рекламное место на главной странице выше линии сгиба очень часто может стоить от $xxx до $x,xxx в день в зависимости от ниши и объёмов трафика.

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

У меня есть несколько других форумов на Discourse, работающих с 2015–2016 годов, и у них практически нет проблем со спам-регистрациями или постами из-за того, что они не являются мишенями. То, что спаммеры не атакуют вас, — это хорошая защита, пока вы не станете целью. Насколько мне известно, Discourse по умолчанию не поддерживается в большинстве коммерчески доступных программ для спама на форумах, таких как Xrumer.

Ну, есть правило, которое я люблю цитировать.

Если вы стали индивидуальной мишенью для Моссада, вы в беде.

5 лайков

Верно, целеустремлённый спамер всегда найдёт способ пройти. Мы видели, как они открывают собственные почтовые серверы и создают тысячи адресов электронной почты — удачи вам в этом.Тем не менее, запрет на дублирующиеся регистрации с использованием этих трюков с Gmail кажется разумной мерой предосторожности?

2 лайка

@codinghorror - Ха-ха, отлично. Но я бы не хотел просто сдаться и сдаться. :man_cartwheeling: Я не думаю, что это пограничный случай; многие социальные сайты не разрешают регистрацию с одним и тем же адресом Gmail из-за злоупотреблений спамерами. Насколько мне известно, большинство крупных платформ не допускают этого.

@bartv - Да, в случае с теми, у кого есть собственные почтовые серверы, мы как минимум можем внести их домены в чёрный список — это довольно эффективная защита (хотя аккаунты, созданные до внесения в чёрный список, всё ещё активны). Они могут получать новые домены, но это хотя бы требует от них ресурсов, в отличие от трюков с Gmail.

Что касается трюков с Gmail, то реальной защиты от них нет, и дополнительные вариации адресов не стоят спамерам ничего. «Спам-адреса с учётом расстояния Левенштейна» могут несколько помочь с трюком точками после многократной блокировки одного и того же адреса Gmail в разных комбинациях точек. Однако сейчас я не могу защитить себя от трюка с плюсом, который позволяет создавать практически неограниченное количество комбинаций.

Разве что у вас есть достаточно влиятельные друзья, способные помочь. И такими друзьями является команда разработки Discourse, здесь (и, возможно, сообщество, если речь идёт о плагинах).

Извините, но разве не было бы хорошо, если бы Discourse обрабатывал все адреса Gmail без точек и всего, что следует после знака «+»? Это технически не кажется сложным. Это всего лишь несколько довольно простых строк кода. Регистрация => обнаружение gmail.com после знака «@» => удаление всех точек и всего, что следует после знака «+» до знака «@», и использование этого адреса => Уже используется? => Возврат сообщения об ошибке «Адрес электронной почты уже используется».

Готово. Или я что-то упускаю?
Если спамеры узнают, что это работает с Discourse, они начнут всё чаще и чаще атаковать форумы Discourse с помощью этой техники. Я имею в виду, почему бы им не сделать этого?

2 лайка

Мы установили, что новые пользователи должны проходить ручную модерацию всех тем/сообщений в течение первых X раз, и это практически мгновенно решило проблему. Некоторые из них пробовали редактировать свои сообщения постфактум, пока мы не применили это и к уровню доверия 0/1.

Хотя это не имеет прямого отношения к какому-либо конкретному трюку с доменом, это нарушает саму суть проблемы: мотивированный человек пытается обойти ваши меры противодействия. Если они не смогут использовать трюк с Gmail, то найдут другой. Я бы лично склонился к тому, что уровень доверия 1 позволяет публиковать сообщения, а для его получения требуется 5 минут времени чтения.

6 лайков

Ну, давайте посмотрим. Какие символы здесь можно использовать?

Некоторые почтовые службы поддерживают тег в локальной части адреса, так что адрес является псевдонимом для префикса локальной части. Например, адрес joeuser+tag@example.com указывает на тот же адрес доставки, что и joeuser@example.com. RFC 5233 называет это соглашение подадресацией, но оно также известно как плюс-адресация, тегированная адресация или расширения почты.

Адреса такого формата, использующие различные разделители между базовым именем и тегом, поддерживаются несколькими почтовыми сервисами, включая Runbox (плюс), Gmail (плюс), Rackspace Email (плюс), Yahoo! Mail Plus (дефис), Apple iCloud (плюс), Outlook (плюс), ProtonMail (плюс), FastMail (плюс и адресация поддоменами), MMDF (равно), Qmail и Courier Mail Server (дефис). Postfix и Exim позволяют настраивать произвольный разделитель из допустимого набора символов.

Итак, у нас есть: плюс, дефис, равно, точка и решётка.

Единственное, что я могу придумать, что сработает здесь, — это сверхстрогая настройка для запрета всех символов, кроме A-Z a-z 0-9, в адресах электронной почты.

Это определённо помешает некоторым пользователям зарегистрироваться, но это может быть приемлемой компромиссной мерой, если вас… э-э… целенаправленно атакуют элитные агенты Моссада, полагаю :male_detective:

Что вы думаете, @eviltrout?

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

4 лайка

Да, я предпочитаю предложенное Бартом изменение.

[ ] использовать каноническую форму для внутреннего хранения адресов электронной почты (удаляет +ВСЁ, убирает комментарии и т. д.).

Предоставляет реализацию на Ruby, которую мы могли бы использовать, но нам нужно быть очень-очень-очень осторожными (пример 1 представляет угрозу безопасности, см.: https://stackoverflow.com/a/52125295/17174)

EmailAddress.canonical("(test)sam.saffron(test)+100@gmail.com")
=> "test@gmail.com"
[3] pry(main)> EmailAddress.canonical("sam.saffron(test)+100@gmail.com")
=> "samsaffron(test)@gmail.com"
[4] pry(main)> EmailAddress.canonical("sam.saffron+100@gmail.com")
=> "samsaffron@gmail.com"

Таким образом, я предлагаю, чтобы наша функция «канонизации» делала следующее:

  1. Удалять +ВСЁ.

  2. Приводить к нижнему регистру (мы уже это требуем).

  3. ЕСЛИ это gmail, googlemail или домен из пользовательского белого списка — удалять точки.

  4. Удалять комментарии (...), которые также могут быть использованы для злоупотреблений.

  5. Нормализовать адрес в соответствии с Unicode (unicode normalize), что технически разрешено согласно: Email address - Wikipedia

Затем добавить скрытую настройку сайта с белым списком доменов для удаления ..

Тем не менее, существует множество способов злоупотребления этим. В конце концов, кто-то может иметь кэш из 10 000 спам-адресов Gmail и зарегистрироваться со всеми ними с помощью какого-либо бота. Если вы являетесь целью атаки, возможно, стоит временно одобрять каждую новую регистрацию. Возможно, это один из тех редких случаев, когда стоит добавить reCAPTCHA при регистрации через плагин.

2 лайка