Найти в Дзене

Спам в Contact Form 7: как мы разработали собственное решение и почему стандартной защиты WordPress недостаточно

Практически каждый коммерческий сайт на WordPress рано или поздно сталкивается с одной и той же проблемой. Пока сайт маленький — всё спокойно. Но как только появляются трафик, реклама или SEO-продвижение, форма обратной связи на Contact Form 7 начинает притягивать спам. Сначала это выглядит безобидно: пара странных писем в день. Потом — десятки. Потом форма превращается в точку постоянной атаки. Почта забивается мусором, реальные заявки теряются, менеджеры перестают доверять форме, а владелец сайта начинает искать «волшебный антиспам-плагин». Мы прошли этот путь на десятках проектов. И именно поэтому пошли не по пути «поставить ещё одну капчу», а разработали собственное решение — CF7 Universal Validator. Сразу честно: мы не планировали писать плагин.
Мы планировали нормально защищать формы клиентов. На практике выяснилось, что: В итоге мы начали шаг за шагом собирать систему защиты, ориентируясь не на теорию, а на реальные атаки. Так и появился CF7 Universal Validator — сначала как вн
Оглавление

Практически каждый коммерческий сайт на WordPress рано или поздно сталкивается с одной и той же проблемой. Пока сайт маленький — всё спокойно. Но как только появляются трафик, реклама или SEO-продвижение, форма обратной связи на Contact Form 7 начинает притягивать спам.

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

Мы прошли этот путь на десятках проектов. И именно поэтому пошли не по пути «поставить ещё одну капчу», а разработали собственное решение — CF7 Universal Validator.

Почему мы вообще решили разрабатывать свой плагин

Сразу честно: мы не планировали писать плагин.
Мы планировали
нормально защищать формы клиентов.

На практике выяснилось, что:

  • стандартных возможностей Contact Form 7 недостаточно;
  • готовые антиспам-плагины либо слишком примитивны, либо ломают UX;
  • капчи снижают конверсию, но не останавливают целенаправленный спам;
  • у каждого проекта свои особенности, а универсального решения «из коробки» нет.

В итоге мы начали шаг за шагом собирать систему защиты, ориентируясь не на теорию, а на реальные атаки. Так и появился CF7 Universal Validator — сначала как внутренний инструмент, а потом как полноценный плагин.

Важная мысль, которую мы всегда озвучиваем клиентам

100% защиты от спама не существует.
И любой, кто обещает обратное, либо не работал с реальными атаками, либо лукавит.

Но существует другое — управляемый спам, когда:

  • мусор не мешает работе;
  • реальные заявки не теряются;
  • защита адаптируется под ситуацию.

Именно под это мы и проектировали наш плагин.

Honeypot — сразу внутри нашего решения

Первое, что мы реализовали, — honeypot. Но принципиальный момент:
мы не используем сторонние honeypot-плагины.

Honeypot встроен прямо в CF7 Universal Validator.
Достаточно добавить в форму тег [hidden cf7uv_hp], и он начинает работать.

Это поле:

  • полностью скрыто от пользователя;
  • визуально и логически присутствует для ботов;
  • отсекает значительную часть автоматического мусора ещё до серверной обработки.

Это не «вся защита», но это правильный первый уровень фильтрации.

Почему мы начали с валидации имени

Когда смотришь логи отправок, быстро становится ясно: спам выдают детали.
Одна из таких деталей — имя.

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

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

Телефон — ключевой элемент защиты, который многие недооценивают

Со временем мы поняли важную вещь:
спамеры могут менять email, тексты и даже IP-адреса, но
номера телефонов повторяются.

Поэтому в CF7 Universal Validator телефон:

  • всегда очищается;
  • приводится к единому формату +7XXXXXXXXXX;
  • проверяется уже в нормализованном виде.

Неважно, как номер ввели — 8 (961)…, +7 961… или 7961….
Для системы это всегда один и тот же телефон.

Дальше включается бизнес-логика:

  • проблемные номера добавляются в чёрный список;
  • временные или внутренние номера — в исключения;
  • формат и длина проверяются на сервере, а не только на фронтенде.

Именно этот подход в реальных проектах позволял резко снижать поток спама, не затрагивая живых пользователей.

Email: контроль повторов, а не формальная проверка

На практике спам почти никогда не идёт с тысяч уникальных почт. Чаще используется ограниченный пул email-адресов, которые крутятся по кругу.

Поэтому мы реализовали полноценный чёрный список email:

  • с блокировкой на фронтенде;
  • с обязательной серверной проверкой;
  • без зависимости от JavaScript.

Это даёт возможность быстро реагировать на атаки, не меняя форму и не ухудшая конверсию.

Поле «Сообщение» — самый честный индикатор спама

Если внимательно посмотреть на тексты спама, становится очевидно:
большинство из них невозможно отправить без ссылок, доменов или рекламных слов.

Поэтому мы реализовали:

  • минимальную и максимальную длину сообщения;
  • запрет ссылок и доменов;
  • списки рекламных и запрещённых слов.

Эти проверки работают и на фронтенде, и на сервере. Даже если кто-то обходит браузерную часть, сервер всё равно отклоняет заявку.

Безопасность, XSS и контроль данных

Форма — это точка входа данных на сайт. Поэтому в CF7 Universal Validator есть защита от XSS и подозрительного кода. Можно указать допустимые HTML-теги и быть уверенным, что форма не станет источником уязвимостей.

Для коммерческих проектов это критично, особенно если сайт активно развивается.

IP-ограничения и автоматическая блокировка

Когда атака идёт сериями, мы подключаем ограничения по IP:

  • лимит отправок за час;
  • временные и постоянные блокировки;
  • автоматическая блокировка при превышении порогов;
  • исключения для доверенных IP.

Это не основной фильтр, а дополнительный уровень, который хорошо работает в связке с остальными проверками.

Почему логирование — обязательная часть системы

Мы всегда говорим:
если вы не видите, что происходит с формой, вы не управляете защитой.

CF7 Universal Validator сохраняет логи всех отправок:

  • что прошло;
  • что было отклонено;
  • по какой причине.

Именно логи позволяют усиливать защиту не наугад, а осознанно.

Наш подход в работе с клиентами

CF7 Universal Validator — это не «плагин ради галочки».
Это инструмент, который
мы сами разработали, используем и постоянно дорабатываем.

На всех сайтах, которые мы обслуживаем:

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

Если форма на сайте — это источник клиентов, а не просто элемент дизайна, защита должна быть такой же серьёзной, как SEO или реклама.

Вместо обещаний — рабочее решение

Мы не обещаем «абсолютную защиту».
Мы предлагаем
системный подход, который:

  • снижает объём спама;
  • сохраняет конверсию;
  • растёт вместе с проектом;
  • и реально работает в коммерческих условиях.

Если вы хотите, чтобы Contact Form 7 перестал быть слабым местом сайта,
и форма начала работать как полноценный бизнес-инструмент —
обращайтесь.

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