Обсудить задачу

Эксплуатация / защита форм

Защита форм MODX от спама

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

Обсудить защиту
Оператор ЭВМ переводит рычаг сортировщика, отправляя пачку одинаково заполненных форм в отдельный лоток
Автомат заполнил всё. Кроме смысла. MODX / защита форм

01 Контекст

Форма — это публичный вход в обработчик

Спам может идти через браузер, прямой HTTP-запрос, распределённую сеть адресов или повторную отправку корректно заполненных данных. Проверка только на стороне интерфейса не защищает серверный обработчик.

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

02 Исходная ситуация

Когда требуется защита

01

Форма получает однотипные сообщения

Повторяются поля, тексты, адреса или интервалы отправки, которые можно использовать как технический признак.

02

Спам обходит JavaScript

Запросы отправляются напрямую в FormIt или пользовательский обработчик без загрузки страницы.

03

Форма создаёт записи во внешней системе

Каждое сообщение уходит в почту, CRM или мессенджер, поэтому фильтрация должна происходить до дальнейшей обработки.

04

Существующая капча мешает пользователям

Нужно проверить доступность, ошибки загрузки, географические ограничения и альтернативные способы проверки.

03 Состав

Из чего состоит защита

reCAPTCHA — один из возможных слоёв, а не единственная точка решения.

01

Диагностика потока

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

  • перечень форм
  • признаки запросов
  • карта обработчиков
02

Серверная валидация

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

  • правила проверки
  • изменения обработчика
  • ответы при ошибке
03

Слои антиспама

Добавляю honeypot, временные признаки, ограничение частоты и при необходимости reCAPTCHA подходящего режима.

  • конфигурация слоёв
  • пороговые условия
  • исключения
04

Журнал и проверка

Фиксирую технические причины отклонения без сохранения лишних персональных данных и тестирую реальные и ошибочные сценарии.

  • события журнала
  • контрольные отправки
  • инструкция по корректировке

04 Метод

Как настраивается фильтрация

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

  1. 01

    Инвентаризация

    Нахожу формы, FormIt-хуки, AJAX-обработчики, получателей и внешние интеграции.

    На выходе: схема прохождения данных
  2. 02

    Выбор признаков

    Определяю, какие условия можно проверить на сервере и где нужен внешний антибот-сервис.

    На выходе: набор слоёв и ограничения
  3. 03

    Внедрение

    Добавляю проверки, сообщения об ошибках, ключи и настройки без размещения секретов в публичном коде.

    На выходе: рабочая конфигурация
  4. 04

    Тестирование

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

    На выходе: протокол сценариев и дальнейший контроль

05 Ответственность

Кто за что отвечает

Я отвечаю

  • за диагностику пути формы
  • за согласованные серверные и клиентские проверки
  • за тестирование и документацию настроек

Со стороны владельца нужны

  • примеры спам-сообщений без лишних персональных данных
  • доступ к MODX, коду и журналам
  • решение по внешнему сервису и требованиям к согласию

06 Оценка

Что определяет объём

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

  1. 01количество форм и обработчиков
  2. 02FormIt и пользовательские хуки
  3. 03AJAX и прямые серверные запросы
  4. 04интеграции с почтой, CRM и мессенджерами
  5. 05доступность журналов
  6. 06требования к приватности и доступности

Перед выбором метода проверяю, где можно надёжно остановить запрос и как форма поведёт себя при недоступности внешней проверки.

07 Среда

Возможные средства

Набор зависит от формы и характера нежелательных запросов.

  • 01MODX Revolution
  • 02FormIt
  • 03Google reCAPTCHA
  • 04honeypot
  • 05серверная валидация PHP
  • 06ограничение частоты запросов

08 Вопросы

До начала работы

01Обязательно ли использовать reCAPTCHA?

Нет. Для части форм достаточно серверной валидации, honeypot и ограничения частоты. Внешний сервис добавляется, если простые слои не соответствуют характеру запросов.

02Как выбрать между версиями reCAPTCHA?

Выбор зависит от сценария, доступности и допустимого взаимодействия с пользователем. Важна обязательная серверная проверка токена независимо от версии.

03Можно защитить прямой запрос к FormIt?

Да. Проверки должны выполняться в серверном обработчике или хуке, а не только в JavaScript на странице.

04Что будет, если внешний сервис недоступен?

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

05Нужно ли хранить заблокированные сообщения?

Не обязательно. Для диагностики достаточно минимальных технических признаков и причины отклонения. Состав журнала должен учитывать требования к персональным данным.

10 Следующий шаг

Разобрать поток формы

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

Обсудить защиту