Скрыть информацию о том, что сайт работает на MODX

Ну вот и случился (июль 2018) массовый взлом MODX REVO, и теперь все те, кто раньше забивали на безопасность задаются вопросом — как защитить систему MODX от взлома? Сам я именно из таких ребят, поэтому постараюсь собрать тут лучшие практики, которые можно применять легко и быстро.

Традиционно первым рубежом защиты является скрытие информации о движке. Чтобы скрипты не смогли определить, что сайт работает на MODX. Пока что у меня вот такой алгоритм:

  1. Вынести папку core за пределы webroot и переименовать ее
  2. Переименовать папки assets, connectors, manager
  3. Внести правки в файлы конфигурации. Указать там новое положение папки /core — /config.core.php, manager/config.core.php, connectors/config.core.php
  4. А в файле core/config.core.php указать все новые пути. Обратите внимание, что для connectors и manager нужно изменить не только $modx_..._path, но и $modx_..._url (находится на строчку ниже)
  5. Добавить в .htaccess строчки, чтобы скрыть config.core.php:
    RewriteCond %{REQUEST_URI} ^/config.core.php*
    RewriteRule ^(.*)$ [R=404]
  6. Добавить в .htaccess строчки, чтобы не показывать ошибки PHP:
    php_flag display_errors off

По поводу robots.txt

Глупо переименовывать папку manager в manager-hidden, и затем писать в robots.txt Disallow: /manager-hidden. но указать-то папки хочется. Выход изящный: Переименовываем папки в формате someprefix-foldername — например asrtasg-manager. И так все папки, у нас получится:
asrt87as_gnuy-manager
asrt87as_gnuy-assets
asrt87as_gnuy-core
asrt87as_gnuy-connectors
Теперь в robots.txt делаем запись Disallow: /asrt87as_gn*. Таким образом все папки закрыты. Пара нюансов - выбираейте такое сочитание символов, которые маловероятно повториться в URL реальной страницы. Например добавьте символ _, (по-умолчанию он преобразуется в - при создании дружественных URL, так содержание его в адресе ресурса исключено). И, удалите пару символов префикса, чтобы совсем спутать - то есть для префикса asrt87as_gnuy пишем Disallow: /asrt87as_gn*.

Обратите внимание, что таким образом мы скрываем от робота все в папке asrt87as_gnuy-assets, а там могут быть важные картинки (уменьшеные изображения товаров, или галлереи). Спросите у СЕОшника нормально ли это. И напишите в комментарии что он ответит:)

И не забудьте проверить свой robots.txt тут - https://webmaster.yandex.ru/tools/robotstxt/

Изменить путь к уменьшеным изображениям

При использовании pThumb, мы имеем путь к изображению вида /assets/components/phpthumbof/cache/3e...61.jpg. Окей, папку assets мы переименовали. Но зоркий глаз, или умный скрипт может увидеть components/phpthumbof/cache и все понять.

Вариант 1:
Чтобы поменять этот путь заходим в code/components/phpthumbof/model/phpthumbof.class.php, и находим там строчки components/phpthumbof/cache, и меняем их.

Вариант 2:
Переходим в системные настройки -> phpthumbof, и там меняем:
pthumb.ptcache_images_basedir -> название папки assets (К сожалению, указав [[++assets_url]], будет нарушена работа сниппета:\)
pthumb.ptcache_location -> название папки assets/MYREZ_Переименуйте-на-своё_FOLDER
pthumb.use_ptcache -> "Да"

Удалите старые папки с кэшированными картинками /assets/components/phpthumbof/cache/


Если у вас есть еще эффективные методы, пишите в комментариях. Спасибо.

Возможные проблемы

Если пропали картинки товаров miniShop2 — перейдите в Медиа -> Источники файлов -> MS2 Images, и отредактируйте настройки basePath и baseUrl. Укажите новый путь к папке assets

Также для старых версий miniShop2 потребуется отредактировать записы в таблицах БД - ms2_product_files и ms2_products:

UPDATE `ПРЕФИКС_ms2_product_files` SET `url` = REPLACE(`url`, '/assets/', '/НОВОЕ_НАЗВАНИЕ_ПАПКИ/');
UPDATE `ПРЕФИКС_ms2_products` SET `image` = REPLACE(`image`, '/assets/', '/НОВОЕ_НАЗВАНИЕ_ПАПКИ/');
UPDATE `ПРЕФИКС_ms2_products` SET `thumb` = REPLACE(`thumb`, '/assets/', '/НОВОЕ_НАЗВАНИЕ_ПАПКИ/');

Комментарии (0)

  1. Напишите первый комментарий
*Комментарий будет опубликован после проверки модератором

Похожие статьи

Генератор настроек MIGX

Документация на русском по MODX MIGX

Подсказки по работе и заготовки для MiniShop2

Импорт и экспорт в MiniShop2. Реализация 1

pdoPage и getImageList - Постраничная навигация MIGX

Как включить HTTPS (SSL) в MODX - Подробная инструкция

Генерация YML для выгрузки в маркет

Примеры работы с API MODX

Расширение свойств товаров minishop2

Примеры выборки where, optionFilters, innerJoin

pThumb - ресайз изображений. Примеры использования.

Примеры использования

Сайт на обслуживании (выключить сайт)

Вывести getImageList только если он не пустой

Тип поля "Список ресурсов" (resourcelist) с ограничением по родителю (parents)

Оформление и настройка easyComm. Комментарии и отзывы на сайте.

Добавить в письмо контактную информацию

Поиск на сайте с пакетом SimpleSearch

Простая и симпатичная галерея fancybox

Вывод tv-параметров в формате -

Галерея. Вывести обложки альбомов и фотографии

Подсчет и вывод количества потомков ресурса в MODX

Отредактировать письмо о заказе - добавить ТВ поле, или что-то еще

Quip для MODX. Более рабочий вариант

pdoResources Заготовки для работы

Сниппет для вывода размера и расширения файла

Простой аудио-плеер HTML5

Вывести список всех опций MiniShop2

Как контролировать кэш CSS и скриптов

Изменить цену на товар в зависимости от количества при добавлении в корзину minishop2

Слайдер Slick slider в контенте ресурса

Подключить MODX в стороннем PHP файле

Простейшая авторизация

Красивое адаптивное меню под pdoMenu

Массово обновить ТВ, или другое поле через базу

Как создать ресурс процессором $modx->runProcessor('resource/create', $props)

Изменить формат номера заказа

Создать свою страницу в админке

Сообщение о том, что сайт использует Cookie

Получить grandparent. Вывести родитель родителя

Симпатичный список файлов, загружаемых к ресурсу через MIGX

Создать источник файлов

Установить шаблон по-умолчанию для новых, создаваемых ресурсов

Вывести все доступные плейсхолдеры

Отредактировать шаблон письма

Добавить скрипт перед тегом body

Общая сумма по каждому товару в корзине Minishop2

Создать раздел с паролем на сайте MODX

Что делать если ее приходит почта администратору

Фильтрация по TV параметрам в msProducts

Дата на русском

FontAwesome - часто используемые иконки для шаблонов MODX

Создать пакет с пользовательской таблицей

Заготовки для работы

Курсы валют с cbr.ru на PHP

Обязательный чекбокс при оформлении заказа

getResources заготовки

Загрузка сниппета после загрузки страницы через AjaxSnippet

Соответствие названия классов с названиями таблиц в MySQL

Баннеры с использованием BannerY

Разбить вывод pdoResources на несколько колонок (блоков)

Обработка остатков заказа в miniShop2

CSS для постраничной навигации pdoPage

Вывести время загрузки (формирования) страницы

Расширить таблицу site_content (объект modResource) за 5 минут

Счетчик посещений и скачиваний для сортировки ресурсов

Вырезать кавычки — фильтр-сниппет MODX

Обновить alias (псевдоним) у всех ресурсов

Динамическое поле emailSubject в FormIt

Бесплатная доставка от 5000 рублей в MiniShop2

Скрыть информацию о том, что сайт работает на MODX

Отсортировать ресурсы по количеству комментариев Quip MODx

Изменить цену на товар, если в корзине лежит товар из особой категории minishop2

Создать редирект через autoRedirector API

Вывести 404 ошибку по настройке TV MODX

Ответ для сервиса moneta.ru

Email сделать не обязательным полем

Как разместить исходный код сниппета на сайте, в документации

Ускорить установку MODX revo до пары кликов

Постраничная навигация — набор параметров и CSS PdoPage

Сделать поле размер обязательным

Не работает подгрузка товаров ajax mfilter2 на мобильном

Сделать все элементы статичными для Git и IDE

Cортировать по списку id в pdoResources и pdoTools

Кастомный чанк для AdminPanel

Настройка стилей для комментариев Tickets

Подключить текстовой редактор к доп. полям ресурса

Динамическая замена шаблона ресурса - плагин

Разместить корзину внутри блока с оформлением заказа

Вывести список всех родителей в ТВ поле ресурса

Плагин для формирования замороженных URL с редиректом

Вложенные условия в xPDO MODX

Приветственный экран / заглушка на сайт

Вывести список всех емэйлов miniShop2

Если getParentIds не работает в плагине

Как получить данные пользователя сразу после авторизации через API

xPDO Выборка из одной таблицы с зацепкой значения из другой

Контролировать кэширование файлов CSS и JS MiniShop2

Не приходят / не отправляются письма - в чем причина?

Кэширование в MODX: использование $modx->cacheManager

Наш сайт использует куки, нажмите «ОК» если вы не против
OK