Спам в формах: как от него избавиться

Спам в формах: как от него избавиться

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

Кто и зачем заполняет ваши формы

За спамом стоят разные источники, и методы борьбы с ними отличаются. Условно их можно разделить на четыре группы.

  • Примитивные боты. Скрипты, которые находят на странице любую форму и заполняют все поля подряд. Их большинство, и отсеять их проще всего.
  • Продвинутые боты. Умеют исполнять JavaScript, имитировать задержки и обходить простые проверки. Встречаются реже, но для них нужны дополнительные меры.
  • Ручной спам. Живые люди, которые за небольшую плату вручную отправляют рекламу услуг продвижения, кредитов или сомнительных товаров. Капча против них бессильна.
  • Злоупотребление формой как почтовым сервисом. Если форма отправляет копию письма на адрес, указанный посетителем, злоумышленник может рассылать через ваш сайт свои сообщения на чужие ящики. Это самый опасный вариант: страдает репутация домена.

Прежде чем выбирать защиту, посмотрите на содержимое мусорных заявок. Бессмысленные наборы символов во всех полях — это примитивные боты. Связные рекламные тексты с отправкой днём в рабочее время — скорее ручной спам. Множество писем с чужими адресами в поле «email» — признак попытки использовать форму для рассылки.

Невидимые методы: защита без раздражения посетителей

Начинать стоит с мер, которые живой человек вообще не замечает. В большинстве проектов их одних достаточно, чтобы поток мусора сократился в разы.

Скрытое поле-ловушка

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

Проверка времени заполнения

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

Одноразовый токен

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

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

Капча: когда она действительно нужна

Если невидимых методов не хватает, на помощь приходят сервисы проверки на робота. Современные варианты чаще всего работают незаметно: анализируют поведение посетителя и показывают задание, только если что-то вызывает подозрение. Это хороший компромисс, но у капчи есть свои минусы:

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

Поэтому капчу мы рекомендуем как второй эшелон, а не как первое средство. Для форм с высоким риском — регистрации, комментариев, восстановления пароля — она оправдана; для простой формы заявки из двух-трёх полей обычно хватает ловушек.

Фильтрация содержимого на сервере

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

ПравилоЧто отсекаетРиск ложного срабатывания
Запрет ссылок в поле сообщенияРекламу с переходами на сторонние сайтыНизкий для большинства бизнесов
Проверка поля «Имя» на ссылки и спецсимволыБотов, подставляющих адреса в каждое полеМинимальный
Стоп-слова в текстеТиповые рекламные сообщенияСредний, список нужно настраивать
Проверка языка сообщенияИностранный спам на русскоязычном сайтеЕсть, если у вас иностранные клиенты
Проверка формата адреса почтыМусорные данные в контактахНизкий при грамотной маске ввода

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

Ограничение частоты и блокировка источников

Если спам идёт волнами с одних и тех же адресов, помогает ограничение числа отправок: не больше нескольких заявок с одного IP за определённый период. На уровне веб-сервера можно блокировать подсети, из которых приходит только мусор. Это действенно, но требует осторожности: под одним адресом могут работать сотни реальных пользователей мобильного оператора или офисной сети, поэтому лучше ограничивать частоту, а не блокировать навсегда.

Не дайте превратить форму в рассыльщик

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

  1. не включайте в автоответ текст, введённый посетителем;
  2. отключите отправку копий на адрес из формы, если в этом нет острой необходимости;
  3. ограничьте частоту отправки автоответов на один адрес;
  4. настройте для домена записи SPF, DKIM и DMARC и отправляйте письма через авторизованный почтовый сервер, а не встроенной функцией PHP;
  5. следите за журналом отправленных писем, чтобы вовремя заметить аномальный рост.

Как выстроить защиту по шагам

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

Вывод

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

Читайте также

Ещё несколько материалов из рубрики «Безопасность сайтов»

DDoS-атаки и небольшие сайты
Безопасность сайтов

DDoS-атаки и небольшие сайты

Многие владельцы небольших сайтов уверены, что DDoS — проблема банков и крупных магазинов. На практике сайт малого бизнеса тоже может лечь от потока запросов. Объясняем, как это бывает, как отличить атаку от обычной перегрузки и что делать.

Время чтения: 7 мин
Безопасная передача доступов подрядчикам
Безопасность сайтов

Безопасная передача доступов подрядчикам

Фрилансер, SEO-агентство, разработчик на разовую задачу — каждому нужен доступ к сайту. Рассказываем, как выдавать его так, чтобы не потерять контроль над проектом, и что обязательно сделать, когда работа закончена.

Время чтения: 7 мин
Защита административной панели сайта
Безопасность сайтов

Защита административной панели сайта

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

Время чтения: 7 мин

Остались вопросы?

Опишите задачу — специалисты студии ответят на почту и предложат решение для вашего сайта.

Нажимая кнопку, вы соглашаетесь с политикой конфиденциальности сайта