К содержимому
DDoS·Protect
Платформы

MODX: защита менеджера, коннекторов и форм

MODX Revolution и MODX 3 популярны у веб-студий для корпоративных сайтов и небольших магазинов на miniShop2. Атакуют обычно менеджер, коннекторы и обработчики форм: почти все они отвечают на AJAX-запросы без кэша, поэтому каждый лишний запрос нагружает PHP и базу данных.

Служебные адреса MODX

АдресЧто тамПравило
/manager/Панель управления и вход администраторовДоступ с разрешённых адресов или проверка браузера и лимит попыток входа
/connectors/Обработчики AJAX-запросов менеджераТе же ограничения, что для /manager/: посетителям сайта они не нужны
/assets/components/…/action.php, connector.phpТочки входа компонентов: AjaxForm, miniShop2, фильтрыЛимиты на сессию и источник, проверка для подозрительных клиентов
Страница поиска (SimpleSearch, mSearch2)Полнотекстовый поиск по базеЛимит на сессию, нормализация параметров
/core/Ядро, конфигурация и кэшЗакрыть на веб-сервере или вынести за пределы корня сайта

Формы и компоненты

Формы на FormIt и AjaxForm — главная цель спам-ботов. AjaxForm отправляет данные на свой action.php в assets/components/ajaxform/, и лимит нужно ставить именно на этот адрес, а не на страницу с формой. Для miniShop2 то же касается обработчика корзины и оформления заказа: добавление товара и пересчёт выполняются AJAX-запросами, которые нельзя закэшировать.

Капчу на каждой форме можно заменить проверкой браузера для подозрительных источников и скрытым полем-ловушкой: в FormIt для него есть валидатор nospam:blank. Подробнее о сценариях — в статье про спам и накрутку форм.

Реальный IP посетителя

MODX берёт адрес посетителя из REMOTE_ADDR, поэтому передавать его нужно на уровне веб-сервера, а не в коде сайта: модуль real_ip в nginx или mod_remoteip в Apache, с доверием только к адресам узлов фильтрации. Тогда журналы и компоненты защиты от спама будут видеть настоящего посетителя. Инструкции — для nginx и Apache.

Что исключить из проверки браузера

  • Обработчики уведомлений платёжных систем для miniShop2 — их вызывает сервер платёжной системы, а не браузер.
  • Скрипт обмена с 1С или складской программой, если он установлен: исключение по адресу сервера обмена.
  • Фиды для Яндекс Маркета и маркетплейсов — их забирают роботы площадок.
  • Задачи по расписанию, которые запускаются HTTP-запросом через wget или curl. Надёжнее перевести их на запуск PHP из командной строки.

Типичные ошибки

  • Менеджер и коннекторы переименованы в config.inc.php, а в правилах остались старые пути — лимиты на вход применяются к адресу, которого больше нет.
  • После установки или обновления на сервере осталась папка setup/ — сканеры проверяют её одной из первых.
  • Кэш фильтра включён для корзины и личного кабинета — посетители рискуют увидеть чужое содержимое.

Вопросы и ответы

Нужно ли переименовывать /manager/?

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

Будет ли работать кэш MODX и pdoTools за фильтром?

Да. Кэш MODX и pdoTools ускоряет сборку страниц на сервере, а кэш фильтра уменьшает число запросов, которые до сервера вообще доходят. Они дополняют друг друга.

Не сломается ли AJAX-отправка форм?

Нет: проверка браузера проходит один раз при открытии страницы, а последующие AJAX-запросы той же сессии выполняются без повторной проверки.

Ранний доступ

Подключим ваш сайт одним из первых

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