Сначала проверьте серверную обработку
Проверка только в браузере не защищает endpoint: бот может отправить запрос напрямую. Проверяйте обязательные поля, формат и допустимую длину на сервере, ограничивайте размер тела запроса и экранируйте данные при выводе.
Не доверяйте скрытым полям, заголовкам и значению User-Agent как доказательству того, что форму отправил человек.
Добавьте малозаметные барьеры
Honeypot-поле может выявить часть простых скриптов, если сервер корректно обрабатывает заполнение этого поля. Скрывайте его доступным для вспомогательных технологий способом и не используйте как единственный критерий блокировки.
Ограничивайте частоту отправки и повторов. Для CAPTCHA оставьте понятный доступный путь прохождения и предусмотрите альтернативу для людей, которым тест недоступен.
Контролируйте качество заявок
Сопоставляйте долю отклонённых запросов с доставленными заявками, ошибками формы и обращениями пользователей. Не считайте каждую необычную отправку вредоносной: автоматизация может быть легитимной, например интеграции и менеджеры паролей.
- Проверяйте, что валидная заявка доходит до CRM и уведомлений.
- Следите за всплесками по endpoint, времени и шаблонам содержимого.
- Не раскрывайте в ответе внутреннюю причину срабатывания фильтра.
Частые вопросы
Достаточно ли одной CAPTCHA?
Нет. Она может добавить трение и обходиться автоматизацией или сервисами распознавания. Сочетайте её с серверной валидацией, ограничениями частоты и наблюдением за результатами.
Нужно ли блокировать все заявки без JavaScript?
Не обязательно. Это может исключить настоящих пользователей и интеграции. Выбирайте проверки под наблюдаемый риск и тестируйте влияние на доставку заявок.