Борьба со спамом в Contact From 7

Борьба со спамом в Contact Form 7

Проблема спама через Contact Form 7 существовала всегда. Но раньше как-то не случалось мощных атак. Время от времени одно-два письма — это не спам. Но тут разверзлось. В день стало сыпаться по несколько десятков писем непонятного содержания.

Через два дня всё стихло. В тот раз помогла связка Akismet + Honeyspot + скрытое поле в форме. А через два года произошла ещё одна атака. И этим спамерам все «связки» были по барабану. Удаление формы со страниц и отключение плагина CF7 не помогли. Спам продолжал сыпаться.

На Хабре Q&A нашёл комментарий одного из пользователей, он писал, что современные боты могут отправлять через CF7 спам, даже если плагин выключен. Не поверил бы, если бы уже второй день не вёл неравный бой.

Итак, спам сыпался и после удаления формы со всех страниц, и даже после отключения плагина. Спасло дублирование формы. Я сделал копию той, через которую валил спам и удалил старую. Выждал два дня и вернул уже новую форму на сайт. Спама нет. Видимо, бот определил некий id формы и начал сыпать в неё прямыми запросами, минуя фронт-энд.

Но убирать на пару дней форму — не самый лучший вариант, особенно если идёт реклама. Поэтому самый действенный способ борьбы со спамом — замена формы CF7 на форму CRM. Там спам отсекается с гарантией. Но CRM используют далеко не все.


Итого:

  1. Akismet не помог.
  2. reCaptcha не помогла.
  3. Honeyspot не помог.
  4. Чёрный список не помог.
  5. Скрытые поля формы работает только на ленивых ботах.
  6. Формы от CRMработает.
  7. Плагины AntiSpam for Contact Form 7 и La Sentinelle antispam не спасли. Хотя последний прям хорош. Отсекает много и качественно. Хоть и не всё.

Akismet

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

Атака была начата в середине апреля. На тот момент Акисмет отфильтровал больше 200 спам-писем. Детальной статистики по дням нет, поэтому надеюсь, что и спам дошёл до нас не весь благодаря этому плагину.

Напомню, что для использования Акисмет в формах CF7, в шорткоды добавляются параметры:

  • Для проверки поля имени: [text* your-name akismet:author]
  • Для проверки почты: [email* your-email akismet:author_email]
  • Для проверки ссылки: [text your-url akismet:author_url]

Подробнее здесь.

reCaptcha от Google

Не повлияла на количество приходящего спама никак. Вообще. Подключали через встроенную в CF7 интеграцию. Процесс быстрый, но бесполезный. Плюс выводит плавающую иконку реКапчи, которая раздражает.

Сознательно не стали подключать реКапчу версии 2 с галочкой «Я не робот», чтобы не убить конверсию от обычных пользователей.

Если решите использовать, инструкция по настройке здесь.

Honeyspot

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

Вот с такими настройками количество спама существенно снизилось, но не прекратилось:

Настройки плагина Honeyspot

В каждую форму необходимо добавить тег скрытого поля. Выглядит так: [honeypot honeypot-372]

Чёрный список

Подсмотрел у «Типичного айтишника» способ, позволяющий CF7 срабатывать на спам, когда содержимое письма соответствует чему-либо из чёрного списка из настроек самого WordPress.

Собственно, это никак не повлияло на количество прилетающего спама, но, добавив этот метод, мы положили конец ложным срабатываниям на спам самого Contact Form 7, когда форму отправляет живой человек и CF7 по каким-то одному ему ведомым алгоритмам определяет письмо как спам.

В functions.php добавляем строку:

add_filter('wpcf7_spam', '__return_false');

После чего CF7 при проверке формы на спам будет сверяться с чёрным списком из настроек WP. Если он у вас проработан и заполнен, этот метод позволит отсечь какую-то часть нежелательных писем.

Скрытые поля формы

Итак, у нас уже работает Akismet и Honeyspot. Добавив ещё одну галочку acceptance, мы победили спам. Ну или нам так кажется и просто прекратилась атака.

Настраивается стандартными средствами CF7. В настройках формы добавляем ещё одну галочку согласия:

<div class="acceptance-fos">[acceptance acceptance-550 invert default:off] Я б0t, поэтому я отмечаю эту галочку, чтобы форма отправилась. [/acceptance]</div>

Я обернул её в div, чтобы скрыть от обычных пользователей стилями. Плюс, сделал галочку отключенной по умолчанию, чтобы бот на неё «нажал». И инвертировал поведение — чтобы форма отправилась, галочка должна быть снята.

Здесь же в настройке формы добавил стили скрытия галочки:

<style>
.acceptance-fos {
    display: none
}
</style>

Во вкладку «Дополнительные настройки» добавил параметр, включающий валидацию полей, чтобы состояние галочек принятия проверялось до отправки формы: acceptance_as_validation: on

UPD. Через пару дней после всех манипуляций пошёл спам через другую форму. После добавления скрытого чекбокса и в неё, спам прекратился. Но следующая атака, спустя два года, показала, что метод не работает.

Формы от CRM

Нашёл этот метод у веб-студии Beyond. На атакованном сайте у нас была интеграция Contact Form 7 с AmoCRM, поэтому попробовали этот метод — вместо форм CF7 вставили формы Амо.

Да, помогает. Спам прекращается. Но формы у CRM’ок, как правило выглядят совершенно отвратительно, поэтому в итоге отказались от них. Но если для вас некритичен внешний вид форм, можете использовать и забыть о спаме.

Подписаться
Уведомить о
guest

0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии