Одна проверка не отличит все автоматические обращения от полезных. Защиту удобнее строить слоями и сохранять возможность разобраться с ложным срабатыванием. Правила защиты согласуйте с полями и сценарием вашей формы.
Honeypot как дополнительный сигнал
Необязательное скрытое поле может помочь обнаружить простую автоматизацию. Не требуйте от человека его заполнить и исключите из клавиатурной навигации. Это не секрет и не механизм авторизации.
<div hidden>
<label for="website_trap">Оставьте поле пустым</label>
<input id="website_trap" name="website_trap" tabindex="-1" autocomplete="off">
</div>
Ограничения на принимающей стороне
Проверяйте размер тела и число полей до дорогой обработки. Ограничивайте частоту по продуманным ключам и возвращайте документированную ошибку, например 429. Общий IP не всегда означает одного человека, поэтому слишком грубое правило может заблокировать полезные обращения.
Не переносите защиту только в JavaScript. Бот способен отправить запрос напрямую. Origin и Referer дают контекст, но не доказывают личность отправителя.
Проверка без настоящего спама
На собственном тестовом endpoint проверьте заполненный honeypot, превышение размера и серию синтетических запросов в согласованных пределах. Убедитесь, что UI объясняет отказ и сохраняет ввод. Не тестируйте чужие системы нагрузкой.
Карантин и ручное восстановление полезных обращений требуют отдельной реализации; наличие поля в шаблоне этого не создаёт.
Источники и дата проверки
Редакционная сверка: 2026-10-27. Учитывайте версию инструментов в своём проекте.
Обновлено