Что такое фейковые регистрации и почему они проходят\n\nФейковые регистрации — это аккаунты, созданные без реального намерения стать пользователями. Иногда это боты, заполняющие форму в большом объёме. Иногда это люди со скриптами, кликовыми фермами или простыми операциями копировать-вставить. Очень часто они используют временные или одноразовые почтовые ящики, чтобы не сталкиваться с верификацией, онбордингом или дальнейшей коммуникацией.\n\nОни проходят, потому что системы регистрации созданы быстрыми и приветливыми. Атакующие пользуются теми же вещами, которые нравятся реальным пользователям: короткие формы, мгновенный доступ и щедрые триалы. Если вы проверяете только, что email «выглядит валидным», бот всё ещё может отправить адрес, который проходит по формату, но никогда не получит ваши письма, или адрес из провайдера временной почты, созданный специально для регистрации.\n\nПроверка email помогает, но одного только email недостаточно. Решительный злоумышленник может менять адреса, использовать реальные почтовые ящики или распределять попытки по множеству IP и устройств. Цель — адресная фрикция: добавлять дополнительные проверки только когда риск высок, вместо того чтобы заставлять всех пользователей проходить сложности.\n\nПоследствия часто шире, чем кажется:\n\n- Траты напрасно (платная реклама, бесплатные триалы, программы поощрений)\n- Плохие метрики (надувшиеся регистрации, исказившиеся коэффициенты конверсии, шум в когортах)\n- Нагрузка на поддержку (загадочные аккаунты, сбросы паролей, жалобы на спам)\n- Ущерб доставляемости (bounces, спам-трапы, ухудшение репутации отправителя)\n\nЛучше всего работает многослойный подход: сильная проверка email (ловит временные домены и недействительные почтовые ящики), лёгкие лимиты, сигналы устройства и поведения, и step-up верификация только когда что-то выглядит подозрительно.\n\n## Как атакующие обходят поток регистрации\n\nАтакующие нацеливаются на регистрацию, потому что это самый дешёвый способ получить выгоду. Один успешный фейковый аккаунт может открыть бесплатный триал, промокод, реферальную награду или доступ к фиче, которую можно перепродать. Создав сотни аккаунтов быстро, они могут исчерпать бюджеты и загрязнить базу пользователей до того, как кто-то заметит.\n\nУ большинства кампаний есть ясная цель. Вы обычно увидите одно из перечисленного:\n\n- Злоупотребление промо и триалами (много «новых» пользователей, которые никогда не конвертируются)\n- Создание аккаунтов про запас (последующее использование «старых» аккаунтов)\n- Спам и скрейпинг (аккаунты только для отправки сообщений или сбора данных)\n- Credential stuffing (тестирование украденных логинов, регистрация после блокировок)\n\nШаблоны редко тонкие. Регистрации часто идут всплесками, с похожими юзернеймами (тот же стиль, случайные цифры, повторяющиеся префиксы), и с прокси или хостинговым трафиком, который быстро меняет IP. Вы также можете заметить повторяющиеся домены в email или несколько аккаунтов с одними и теми же доменами за короткое время.\n\nВременные почтовые ящики помогают им двигаться быстро и оставаться трудно отслеживаемыми. Даже если адрес «достаточно валиден» для простого форматного чекера, это часто сигнал низкого намерения. Недействительные адреса — ещё один приём: они всё равно создают нагрузку на систему и вызывают bounce-письма, что вредит доставляемости.\n\nПоэтому рассматривайте валидацию email как первый фильтр, а не как единственный. Она блокирует очевидный мусор на входе, в то время как другие контролы ловят остальное.\n\nПример: бот регистрируется на 200 бесплатных триалов, используя новый прокси IP каждый раз. Валидация email может остановить многие попытки (временные домены, нерабочие MX), а оставшиеся попытки будут заметны после добавления лимитов и step-up проверок для трафика с высоким риском.\n\n## Простая модель многослойной защиты\n\nЧтобы сократить мошенничество, не раздражая реальных людей, комбинируйте несколько лёгких проверок, которые работают вместе. Каждый слой ловит разный тип плохой регистрации, так что вы не полагаетесь на один сигнал, который атакующие могут изучить и обойти.\n\nНачните с проверки email, потому что она быстрая и малотрениевая. Хорошая валидация проверяет больше, чем синтаксис: подтверждает, что домен реален, проверяет записи MX, помечает провайдеров временной почты и добавляет сигналы риска для паттернов, связанных со спам-трапами. Рассматривайте результат как вход в скоринг риска, а не просто «проход/отказ».\n\nПосле этого добавляйте фрикцию только когда она оправдана:\n\n- Лимиты скорости, чтобы замедлить всплески, ограничивать повторы и добавлять откат после частых неудач\n- Сигналы устройства и сети, чтобы заметить повторное использование настроек (одно и то же устройство, диапазон IP, ASN, user agent)\n- Step-up проверки: email OTP, SMS, CAPTCHA или короткая ручная проверка для очень рискованных попыток\n- Логирование и метрики, чтобы вы могли настраивать правила без догадок\n\nОбычная регистрация с известным корпоративным доменом и спокойным поведением должна пройти только с валидацией. Регистрация с временным доменом, пятью попытками в минуту и совпадением с устройством, замеченным при прошлом злоупотреблении, должна быть замедлена и попросить подтвердить владение.\n\nСамый важный слой — измерение. Если вызовов проверки много, но подтверждённого мошенничества мало, правила слишком строгие. Если мошенничество всё ещё проходит, ужесточите троттлы и понизьте пороги step-up для самых рискованных сочетаний.\n\n## Правила валидации email, которые ловят простые случаи\n\nБольшинство фейковых регистраций начинается с простых адресов: опечатки, выдуманные домены или одноразовые почтовые ящики. Поймав их рано, вы сокращаете много шума, не добавляя барьеров для легитимных пользователей.\n\nПрактичный шаблон — валидировать дважды. Сначала проверяйте при потере фокуса поля (on blur), чтобы дать пользователю моментальную обратную связь. Затем проверяйте снова при отправке как финальный фильтр, потому что атакующие часто обходят браузерные проверки.\n\nФокусируйтесь на правилах, которые ясны и трудно оспорить:\n\n- Отклоняйте недопустимый синтаксис (нет @, запрещённые символы) с простым сообщением вроде «Похоже, этот email неверен.»\n- Отклоняйте домены, которых не существует (NXDOMAIN) и домены без рабочей почтовой настройки (нет MX).\n- Нормализуйте обычные ошибки (обрезать пробелы, приводить домен к нижнему регистру) прежде чем оценивать ввод.\n\nВременные провайдеры сложнее. Полный запрет может блокировать реальных пользователей, которые ценят приватность, но пропуск всех временных адресов допускает злоупотребления. Средний путь — считать их более рисковыми и выбирать политику по контексту (триал, реферальные бонусы, высокоценные аккаунты).\n\n### Жёсткий отказ vs мягкий отказ\n\nРазграничьте результаты, чтобы поток регистрации оставался гибким:\n\n- Жёсткий отказ: недействительный синтаксис, несуществующий домен, отсутствие MX. Блокировать регистрацию.\n- Мягкий отказ: временный email, известные паттерны спам-трапов, недавно замеченные рискованные домены. Разрешать, но помечать для последующей фрикции.\n\n### Не проверяйте бесконечно\n\nВызовы валидации стоят времени. Сохраняйте результат и временную метку вместе с попыткой регистрации и переиспользуйте их при повторах в коротком окне (например, 10–30 минут). Храните сырый ответ, чтобы позже объяснить решения и настроить правила на основе реальных данных.\n\n## Лимиты и троттлы, которые действительно помогают\n\nЛимиты работают лучше, когда они конкретны и предсказуемы. Цель — замедлить автоматизацию, не заставляя нормальных людей чувствовать наказание.\n\nХорошая отправная точка — лимиты по IP на двух скоростях: короткие всплески и продолжительное давление. Например, разрешите небольшое число попыток регистрации в минуту и более высокий потолок в час. Почасовой лимит ловит медленные «капельные» атаки, которые пытаются оставаться незаметными.\n\nЧтобы не блокировать общие сети, добавьте лимиты по идентификатору устройства или отпечатку сессии. Одна офисная Wi‑Fi сеть с меньшей вероятностью будет заблокирована, если ограничение будет применяться по отдельному устройству.\n\nПрогрессивные задержки (cooldowns) часто лучше, чем жёсткие баны. После повторных неудач или повторных регистраций с одного источника добавляйте небольшие паузы: 2 секунды, затем 5, затем 30. Реальные пользователи почти не заметят, а боты терпеть не будут.\n\nТакже следите за очевидными паттернами: десятки разных email, отправленных с одного источника за секунды, или много попыток, которые меняют только часть после плюса в адресе.\n\nБелые списки могут помочь, но держите их узкими. Если нужно разрешить известную корпоративную сеть, включайте в белый список только то, что можете проверить и мониторить, и всё равно держите лимиты по устройствам, чтобы одна скомпрометированная машина не могла засорить регистрацию.\n\n## Сигналы устройства и поведения для обнаружения повторных злоупотреблений\n\nПроверки email ловят многое, но повторные злоумышленники часто используют одну и ту же настройку с небольшими изменениями. Сигналы устройства и поведения помогают связывать попытки и применять нужную фрикцию только когда это важно.\n\nНачните с лёгких сигналов устройства, которые достаточно стабильны, чтобы быть полезными. Простая cookie или token в localStorage скажет, возвращается ли один и тот же браузер после неудачных регистраций. Следите за нестабильностью user agent: если строка браузера и ОС меняется при каждой попытке, это распространённый признак автоматизации. Несоответствия часового пояса также могут быть полезны: браузер, настроенный на один регион, а IP указывает на другой.\n\nСетевые сигналы добавляют слой. Всплеск регистраций из сетей, похожих на дата-центры, высокая вероятность прокси/ VPN или быстрые скачки геолокации между попытками — всё это основания считать сессию более рискованной. Вам не нужна идеальная точность — достаточно сигнала, чтобы отделить норму от очевидного повтора злоупотреблений.\n\nПоведение — там, где боты часто выдают себя. Следите за вставкой email целиком, нереально быстрой заполненностью формы и отсутствием пауз между полями. Человек может вставить email, но вряд ли будет заполнать каждое поле за пару секунд каждый раз.\n\nПростая операционная модель — модель корзин риска:\n\n- Низкий риск: разрешать регистрацию обычно\n- Средний риск: добавить небольшую задержку, CAPTCHA или дополнительное подтверждение\n- Высокий риск: требовать step-up верификацию или блокировать попытку\n\nПример: email проходит валидацию, но попытка приходит с вероятного прокси, user agent меняется при каждой попытке, и форма заполняется за 3 секунды — отнесите в высокий риск.\n\nСоблюдайте приватность. Собирайте минимум нужных сигналов, документируйте, зачем вы их берёте, и избегайте сбора чувствительных данных, которые вам не нужны.\n\n## Step-up верификация для регистраций с высоким риском\n\nStep-up верификация — это добавление дополнительной проверки только когда регистрация выглядит подозрительной. При грамотном применении она останавливает злоупотребления, не превращая регистрацию в полосу препятствий.\n\nНачните с чётких триггеров. Один слабый сигнал не должен быть достаточным. Ищите комбинации, которые указывают на злоупотребление: результат как временный email плюс всплеск попыток из одного диапазона IP, или рискованная сеть (дата-центр, VPN) с повторяющимися отпечатками устройств.\n\nПрактичные триггеры, которые часто работают:\n\n- Временный или заблокированный провайдер email + более 3 попыток за 2 минуты\n- Одно и то же устройство создаёт много аккаунтов с разными email\n- Рисковый ASN плюс повторные неудачи в OTP или проверке пароля\n- Несколько регистраций с общими «уникальными» полями (имя, компания, реферальный код)\n\nКогда срабатывает триггер, выбирайте самое лёгкое действие, которое остановит атаку: одноразовый код по email, CAPTCHA, проверка по телефону или ручная модерация для крайних случаев.\n\nДелайте опыт таргетированным и с возможностью восстановления. Если легитимный пользователь не прошёл проверку (ошибка ввода OTP, задержка доставки), предлагайте запасные варианты: «выслать код снова», «использовать другой email» или «обратиться в поддержку для верификации». Не блокируйте молча без объяснения.\n\nПредотвращайте злоупотребление циклами. Ограничьте отправки OTP по адресу и по устройству и введите жёсткие лимиты на повторы. Например: 3 отправки OTP в час и 5 общих попыток перед откатом.\n\n## Пошагово: как объединить валидацию и фрикцию\n\nНачинайте с минимально инвазивных проверок и добавляйте более жёсткие шаги по мере роста риска.\n\n### 1) Постройте поток от низкой фрикции к высокой\n\nПрактичный порядок, подходящий большинству продуктов:\n\n- Валидируйте email на фронте (синтаксис, домен, MX, провайдеры временной почты).\n- Примените базовые лимиты (по IP, по устройству, иногда по домену).\n- Добавьте сигналы устройства и поведения (повторные отпечатки, невозможная скорость, слишком много повторов).\n- Оцените попытку (низкий, средний, высокий риск) и решите, что делать дальше.\n- Вводите step-up верификацию только для попыток с высоким риском (email OTP, CAPTCHA или модерация).\n\nДержите путь по умолчанию простым. Большинство реальных пользователей должны пройти только первый шаг.\n\n### 2) Используйте сообщения об ошибках, которые помогают пользователям, а не атакующим\n\nБудьте ясны, но не чрезмерно конкретны. «Не удалось создать аккаунт. Пожалуйста, попробуйте снова или используйте другой email.» безопаснее, чем «Обнаружен временный email» или «Нет записи MX», что учит атакующего, какое правило менять.\n\nЕсли нужна детализация, сохраняйте её в логах, а не в UI.\n\n### 3) Включите мониторинг перед настройкой порогов\n\nОтслеживайте несколько метрик ежедневно, чтобы видеть компромиссы:\n\n- Попытки регистрации против успешных регистраций\n- Блокировки по причинам (ошибка валидации, лимит, неудача step-up)\n- Процент успешных step-up (сколько легитимных пользователей получают вызовы)\n- Изменения в конверсии (коэффициент завершения, время до регистрации)\n\nПодстраивайте одно пороговое значение за раз и пересматривайте еженедельно. Если количество вызовов проверок растёт, а подтверждённого мошенничества мало — ваши ранние фильтры слишком слабые или пороги слишком жёсткие.\n\nЗапланируйте поддержку пользователей. Имейте простой путь «помогите мне зарегистрироваться» (без раскрытия правил детекции) для редкого легитимного пользователя, которого заблокировало.\n\n## Распространённые ошибки, которые увеличивают трение, но не останавливают мошенников\n\nФрикция должна быть таргетированной. Если вы добавляете её везде, реальные люди почувствуют это первыми, а решительные атакующие найдут обход.\n\nБлокировка всех бесплатных почтовых доменов (Gmail, Outlook и т.п.) — классическая ошибка. Многие реальные пользователи используют такие домены. Сосредоточьтесь на качестве адреса (синтаксис, домен, MX, списки временных провайдеров), а не на наказании нормального выбора.\n\nПолагаться только на IP-лимиты — ещё один капкан. Атакующие меняют IP или используют ботнеты, поэтому лимит едва их замедлит. В то же время общие сети (офисы, школы, мобильные операторы) могут сделать многих реальных пользователей похожими на одного злоумышленника. IP — это сигнал, а не всё решение.\n\nCAPTCHA для всех ухудшает конверсию и всё ещё решается сервисами по разгадке. Лучше показывать её только при подозрительном поведении (высокая скорость, повторные неудачи, странные параметры устройства).\n\nOTP верификация может навредить, если не ограничить отправки. Злоумышленники могут триггерить массу SMS или email с кодами, тратя ваши ресурсы и раздражая пользователей. Введите жёсткие лимиты на отправки по аккаунту, по устройству и по времени.\n\nИ наконец, команды часто пропускают аудиторский след. Без логов, объясняющих, почему пользователя заблокировали или запросили проверку, вы не сможете настроить пороги или решить проблемы поддержки. Даже простая запись полезна:\n\n- Какое правило сработало\n- Какое действие принято (разрешить, блок, step-up)\n- Базовый контекст (время, IP, user agent, домен email)\n- Результат (регистрация завершена, отказ, повторная попытка)\n\n## Быстрый чек-лист перед выкатом изменений\n\nПрежде чем перевести защиты регистрации в прод, определите, как «хорошо» выглядит для реальных пользователей.\n\nКонтрольный список перед релизом, который можно пройти за один присест:\n\n- Опишите действия для каждого результата проверки email. Если чек возвращает valid, invalid, disposable или risky — пропишите точный исход для каждого (разрешить, блокировать, разрешить с step-up).\n- Подтвердите лимиты и cooldown'ы. Установите лимиты по IP, отпечатку устройства и email. Добавьте короткий откат после повторных неудач.\n- Задокументируйте триггеры для step-up. Перечислите условия, которые запускают OTP, CAPTCHA или дополнительную верификацию (например: risky email + высокая скорость с одного устройства). Протестируйте пути в staging.\n- Ограничьте повторы и мониторьте злоупотребления. Установите лимиты на повторы OTP и CAPTCHA, логируйте события вроде «OTP отправлен» и «OTP не подтверждён».\n- Настройте еженедельный обзор метрик. Отслеживайте процент блокировок, ложные срабатывания и общую конверсию регистрации.\n\nОдин быстрый тест: сделайте три пробные регистрации (обычный рабочий email, временный email и домен с опечаткой) и убедитесь, что поток ведёт себя в точности согласно вашим правилам.\n\n## Пример: остановка всплеска фейковых триалов без блокировки реальных пользователей\n\nSaaS запускает бесплатный триал в понедельник. Через десять минут аналитика показывает 500 новых регистраций. Поддержка замечает волну bounce-писем. Ничего не сломалось — это автоматизированные регистрации.\n\nОдна только валидация email поймает очевидные плохие адреса (опечатки, мёртвые домены, отсутствие MX). Но часть всплеска всё ещё пройдёт с валидно выглядящими доменами и временными ящиками, которые проходят базовые проверки, или с недавно созданными ящиками, которые могут принимать почту короткое время.\n\nДва лёгких контроля уменьшают ущерб, не мешая нормальным пользователям. Во‑первых, лимиты на endpoint регистрации, чтобы один источник не создавал аккаунты машинной скоростью. Во‑вторых, сигналы устройства и сети, чтобы увидеть кластеризацию: много попыток из одного диапазона IP, один и тот же отпечаток устройства или одинаковый профиль браузера.\n\nС этими сигналами вы можете поднять step-up только для подозрительной корзины:\n\n- Нормальный трафик: валидируем email, создаём аккаунт, посылаем приветственное письмо.\n- Подозрительный трафик: требуем email OTP, откладываем создание аккаунта до подтверждения адреса или ужесточаем лимиты.\n- Явно злоумышленный трафик: временно блокируем и логируем паттерн для настройки правил.\n\nЧто измерять после изменений: всплеск даёт гораздо меньше активированных аккаунтов, bounce-показатели падают, доставляемость улучшается, а конверсия триала остаётся стабильной, потому что реальные пользователи продолжают простой путь, а боты замедляются или вынуждены доказывать, что они реальные.\n\n## Следующие шаги: безопасный выкатывание и постоянная настройка\n\nНачните с изменений, которые можно выпустить за неделю, и измеряйте результат. Выберите небольшой набор контролей и с первого дня добавьте хорошее логирование.\n\nНа первую неделю сосредоточьтесь на трёх базовых вещах:\n\n- Валидация email при регистрации (синтаксис, домен, MX, проверка временных провайдеров)\n- Базовые лимиты по IP и по идентификатору аккаунта (email, телефон, код приглашения)\n- Логирование каждого решения (разрешено, запрошена проверка, заблокировано) с указанием причины\n\nЕсли хотите выделенный слой качества email, Verimail (verimail.co) — это enterprise-уровневый API проверки email, который проверяет RFC-совместимый синтаксис, верифицирует домены, смотрит MX и сопоставляет с тысячами известных провайдеров временной почты одним вызовом. Это малотрениевый способ остановить недействительные и одноразовые адреса до попадания их в базу данных; у сервиса есть бесплатный уровень 100 валидаций в месяц без необходимости кредитной карты.\n\n### Определите пороги и эскалацию\n\nПропишите простые правила, которые говорят системе, что делать дальше:\n\n- Step-up: необычная скорость, повторные неудачи, рискованный тип email или новое устройство плюс другие подозрительные сигналы\n- Блок: явные шаблоны автоматизации, повторное использование временных адресов или известные плохие сети\n- Ручная проверка: пограничные случаи, где вы не хотите рисковать блокировкой (например, корпоративные домены с нестандартной почтовой настройкой)\n\n### Внедряйте постепенно и следите за показателями\n\nВыпускайте изменения сначала на небольшую долю трафика (5–10%), затем расширяйте. Сравнивайте конверсию и показатели мошенничества бок о бок: процент завершения регистрации, время до регистрации, процент ошибок валидации, bounce rate и жалобы на злоупотребления.\n\nНазначьте регулярные обзоры (сначала еженедельно, потом ежемесячно). Атакующие быстро адаптируются, поэтому относитесь к порогам как к живым настройкам. Следите за новыми временными доменами, смещающимися диапазонами IP или паттернами устройств и корректируйте триггеры step-up до того, как будете усиливать блокировки.