Как защитить сайт от спама: многоуровневая стратегия
Спам на формах — не раздражение, а угроза бизнесу. Он забивает CRM, портит репутацию почты в глазах провайдеров, создаёт ложную нагрузку на сервер и маскирует реальные заявки. Боты не «пробуют угадать» — они автоматизируют поиск форм и отправляют запросы тысячами в час.
Откуда берётся спам
- Парсинг DOM: боты ищут
<form>,<input type="email">, кнопки сsubmit. - Открытые API: если форма отправляет данные на публичный эндпоинт без проверки источника.
- Устаревшие плагины: известные дыры в валидации или отсутствии rate-limit.
- Отсутствие серверной фильтрации: проверка только на фронтенде легко обходится.
Многоуровневая защита
Уровень 1: Базовая фильтрация (обязательно)
- Honeypot: скрытое поле, которое заполняют только боты. Простые формы отпадают сразу.
- Серверная валидация: проверка формата, длины, допустимых символов. Никаких
eval()или прямой передачи данных в БД. - Rate Limiting: ограничение на количество отправок с одного IP/сессии (например, 3 в час).
Уровень 2: Умная защита (рекомендуется)
- reCAPTCHA v3 / Cloudflare Turnstile: оценивают поведение без кликов. Не раздражают пользователей, но блокируют автоматические скрипты.
- Проверка referer и origin: отклонение запросов, пришедших не с вашего домена.
- Временные токены (CSRF): каждая форма получает уникальный одноразовый токен.
Уровень 3: Продвинутая фильтрация (для высоких нагрузок)
- WAF (Web Application Firewall): Cloudflare, ModSecurity, AWS WAF. Блокируют известные бот-сети и подозрительные паттерны.
- Анализ поведения: задержка отправки формы, проверка времени заполнения (боты заполняют за <0.1 сек).
- Email-верификация: подтверждение через ссылку или код, если форма критична (регистрация, заказ).
⚠️ Чего делать не стоит
❌ Ставить устаревшую CAPTCHA (v2 с картинками) на все формы — падает конверсия на 15–30%.
❌ Полагаться только на JS-валидацию — отключается в 2 клика.
❌ Игнорировать логи сервера — спам часто маскируется под легитимные запросы.
❌ Использовать «чёрные списки IP» без обновления — боты меняют адреса быстрее, чем вы обновляете правила.
Как отследить проблему
- Включите логирование отправок форм (IP, user-agent, время, payload).
- Настройте алерты при >10 отклонённых запросов в минуту.
- Анализируйте паттерны: одинаковые тексты, подозрительные домены в email, короткие интервалы.
- Тестируйте защиту через эмуляторы (Puppeteer, Postman) — убедитесь, что легитимные пользователи не блокируются.
Чек-лист минимальной защиты
- Honeypot-поле в каждой форме
- Серверная валидация + CSRF-токен
- Rate-limit (IP + сессия)
- reCAPTCHA v3 / Turnstile на критичных формах
- Логи отправок + мониторинг аномалий
- Регулярное обновление CMS/плагинов
Итог
Спам — управляемая проблема. Нет «волшебной кнопки», но есть система: базовая фильтрация + поведенческий анализ + мониторинг. Правильно настроенная защита убирает 95%+ автоматических заявок без ухудшения UX.
Если на сайте уже есть проблемы со спамом, можно настроить защиту и проверить формы.