Защита форм от спама
Любая форма на сайте — обратная связь, заявка, комментарий — рано или поздно становится мишенью для ботов. Они автоматически заполняют поля рекламой, ссылками и мусором, заваливая почту и базу хламом. Полностью спам не победить, но снизить его до единичных случаев — реально. Разберём способы, от самых простых до надёжных.
Способы защиты
С чего начать
Хорошая новость: самые простые приёмы — honeypot и проверка времени — отсекают большую часть примитивных ботов и при этом вообще не видны живым посетителям. С них и стоит начать: они бесплатны, не раздражают людей и не требуют сторонних сервисов. Если после них спам всё равно идёт (значит, вами занялись боты поумнее) — добавляют капчу.
Баланс защиты и удобства
Главный принцип: защита не должна мешать тем, ради кого форма и сделана. Лучшая защита — та, которой посетитель не замечает. Поэтому порядок такой: сначала невидимые методы (honeypot, тайминг), затем — фоновая капча, и только для особо назойливого спама — заметные проверки. Так вы режете ботов, не теряя живых заявок.
Не только формы
Если форма — это подписка на рассылку, добавьте двойное подтверждение (double opt-in): человек подтверждает почту по ссылке из письма. Это и от ботов защищает, и держит базу чистой, что важно для доставляемости писем. А базовую защиту входа в админку обеспечивает надёжный пароль — но это уже про безопасность сайта в целом.
Как работает honeypot
Honeypot («горшочек с мёдом») — самый изящный метод, и устроен он просто. В форму добавляют лишнее поле (например, «ваш сайт» или «отчество») и прячут его стилями (display:none), чтобы человек его не видел и не заполнял. А бот видит весь HTML и по привычке заполняет все поля подряд, включая скрытое. Дальше логика очевидна: на сервере проверяют это поле — если оно не пустое, форму отправил бот, и заявку молча отклоняют. Живой посетитель скрытое поле не трогает, поэтому метод вообще не мешает людям и не требует ни капчи, ни сторонних сервисов. Часто одного honeypot хватает, чтобы отсечь основную массу примитивных ботов.
Какие капчи бывают
Если до капчи дошло, выбирайте с умом — они сильно различаются по дружелюбию. Чекбокс «я не робот» привычен, но иногда подкидывает картинки. Невидимая капча (вроде reCAPTCHA v3) работает в фоне, оценивая поведение, и показывается, только если что-то подозрительно. Для Рунета удобна Яндекс SmartCaptcha — она и дружелюбна к людям, и хорошо ловит ботов, и не зависит от иностранных сервисов, которые могут хуже работать у российских пользователей. Общее правило: чем меньше капча мешает живому человеку, тем лучше. Картинки со светофорами — это прошлое.
Серверные приёмы защиты
Клиентские проверки можно обойти, поэтому последний и самый надёжный рубеж — на сервере, где бот уже ничего не подменит. Что проверяют: формат данных (настоящий ли email, похож ли телефон на телефон), наличие ссылок и стоп-слов в тексте (спам почти всегда тащит ссылки), лимит отправок с одного IP за период (защита от потока). Помогает и проверка, пришёл ли запрос действительно с вашей страницы. Серверные проверки не видны посетителю и работают даже против ботов, прошедших клиентскую защиту, — поэтому совсем без них полагаться только на honeypot и капчу не стоит.
Как понять, что вас атакуют боты
Распознать ботовый спам несложно по нескольким признакам. Резкий всплеск заявок без причины, особенно ночью. Однотипный текст в сообщениях — часто реклама, ссылки или бессмысленный набор слов. Латиница и иностранные имена там, где их быть не должно. Несуществующие или одноразовые адреса почты. Отправки чаще, чем человек физически может. Если видите такое — пора усиливать защиту: добавить уровень, которого не хватает, обычно это серверная проверка или капча.
Коротко
Спам в формах шлют боты, и полностью его не убрать, но свести к единичным случаям можно. Начните с невидимых методов — скрытого поля honeypot и проверки времени отправки: они отсекают большинство ботов и не мешают людям. Если спам продолжается, добавьте современную фоновую капчу, а на сервере проверяйте формат данных и лимиты. Главное — не превращать защиту в препятствие для живых посетителей: навязчивая капча бьёт по конверсии сильнее, чем сам спам.