Исправление ошибки «Каталог ядра в открытом доступе» в MODX 2.5

исправление ошибки Каталог ядра в открытом доступе" MODX 2.5

Всем привет! Недавно я сталкнулся с проблемой, а именно у меня возникала ошибка "Каталог ядра в открытом доступе" в MODX 2.5. Разработчики CMF добавили эту проверку вроде бы с версии 2.4, она связанна с безопасностью сайта.

Дело в том, что если не исправить данную ошибку, то злоумышленник сможет украть у Вас данные к БД, ну или узнать версию MODX. Так что лучше исправить эту проблему.

Начнем с простого

Для начала, давайте начнем с самых простых вещей, которые указаны в самой ошибки. Первым делом необходимо переименовать уже имеющийся там файл в папке /core  "ht.access" в ".htaccess" и очистить кэш.

Начиная с версии 2.5, содержимое ".htaccess" выглядит так:

# deny access to _all_ files in the core, including changelog.txt and error.log
# original borrowed from owncloud

# line below if for Apache 2.4
<ifModule mod_authz_core.c>
    Require all denied
</ifModule>

# line below if for Apache 2.2
<ifModule !mod_authz_core.c>
    deny from all
    Satisfy All
</ifModule>

# section for Apache 2.2 and 2.4
IndexIgnore *

Не помогло? Вот и мне не помогло :D, когда я пытался решить эту проблему с переносом сайта на другой хостинг.

Дело в том, что большинство хостинг компаний, используют следующую схему работы, при которой запросы к статичным файлам (в частности txt) обрабатываются с помощью Nginx, а остальные запросы передаются Apache.

Поэтому файл ".htaccess" не может использоваться для отключения доступа к статическим файлам, так как он обрабатывается только на уровне Apache. А MODX как раз-таки и проверяет файл (/core/docs/changelog.txt)

UPD. На некоторых сайтах использую

Deny from all
AllowOverride None

Можно ещё проще, нужно проверить, что не открывается в браузере файл /core/cache/logs/error.log, а потом просто удалить или переименовать файл /core/docs/changelog.txt

Второй метод справления ошибки "каталог ядра в открытом доступе"

Что же делать? Как решить проблему "каталог ядра в открытом доступе"? Всё очень просто, для этого нужно перенести /core за пределы публичной части сайта (public_html).

  • Переносим папку core за пределы public_html
  • Дальше необходимо в /core/config/config.inc.php изменить путь к папке /core в переменных $modx_core_path, $modx_processors_path

Также меняем путь к папке /core в файлах:

  • /config.core.php 
  • /connectors/config.core.php
  • /manager/config.core.php

И вручную удаляем содержимое папки /core/cache. Саму папку cache не удаляем! Вот и всё, мы исправили проблему "каталог ядра в открытом доступе" в MODX

Если у Вас возникли вопросы, задавайте через форму ниже.

31.07.2016 / 25397