Служебные адреса 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-запросы той же сессии выполняются без повторной проверки.
Читайте также
- АтакиСпам форм, накрутка заявок и SMS-бомбингФальшивые заявки, регистрации и расходы на SMS
- ВозможностиЗащита формы входа от перебора паролейОтражение перебора и подстановки паролей из утечек
- ВозможностиПроверка браузера без капчиНевидимая проверка вместо капчи для подозрительных запросов
- База знанийРеальный IP посетителя за прокси в nginxМодуль real_ip и доверенные адреса