Приложение 5: Повысьте безопасность вашей установки XOOPS
После установки XOOPS 2.7.0 выполните следующие шаги для укрепления сайта. Каждый шаг необязателен отдельно, но вместе они значительно повышают базовую безопасность установки.
1. Установите и настройте модуль Protector
Заголовок раздела «1. Установите и настройте модуль Protector»Комплектный модуль protector - это брандмауэр XOOPS. Если вы не установили его во время начального мастера, установите его на экране Admin → Modules сейчас.

Откройте панель администратора Protector и просмотрите предупреждения, которые она отображает. Устаревшие директивы PHP, такие как register_globals, больше не существуют (PHP 8.2+ удалили их), поэтому вы больше не будете видеть эти предупреждения. Текущие предупреждения обычно относятся к разрешениям каталогов, параметрам сеанса и конфигурации пути доверия.
2. Заблокируйте mainfile.php и secure.php
Заголовок раздела «2. Заблокируйте mainfile.php и secure.php»Когда установщик завершит работу, он пытается отметить оба файла как доступные только для чтения, но некоторые хосты возвращают разрешения. Проверьте и переприлуйте при необходимости:
mainfile.php→0444(владелец, группа, другое только для чтения)xoops_data/data/secure.php→0444
mainfile.php определяет константы пути (XOOPS_ROOT_PATH, XOOPS_PATH, XOOPS_VAR_PATH, XOOPS_URL, XOOPS_COOKIE_DOMAIN, XOOPS_COOKIE_DOMAIN_USE_PSL) и флаги производства. secure.php содержит учетные данные базы данных:
- В 2.5.x учетные данные базы данных находились в
mainfile.php. Теперь они хранятся вxoops_data/data/secure.php, который загружается наmainfile.phpво время выполнения. Сохранениеsecure.phpвнутриxoops_data/— каталога, который вы поощряли перемещать вне корневого документа — делает намного сложнее для злоумышленника достичь учетные данные по HTTP.
3. Переместите xoops_lib/ и xoops_data/ вне корня документа
Заголовок раздела «3. Переместите xoops_lib/ и xoops_data/ вне корня документа»Если вы еще не сделали этого, переместите эти два каталога на один уровень выше веб-корневой и переименуйте их. Затем обновите соответствующие константы в mainfile.php:
define('XOOPS_ROOT_PATH', '/home/you/www');define('XOOPS_PATH', '/home/you/zubra_mylib');define('XOOPS_VAR_PATH', '/home/you/zubra_mydata');define('XOOPS_TRUST_PATH', XOOPS_PATH);Размещение этих каталогов вне корня документа предотвращает прямой доступ к дереву Composer vendor/, кэшированным шаблонам, файлам сеанса, загруженным данным и учетным данным базы данных в secure.php.
4. Конфигурация домена файла cookie
Заголовок раздела «4. Конфигурация домена файла cookie»XOOPS 2.7.0 вводит две константы домена файла cookie в mainfile.php:
// Используйте список публичных суффиксов (PSL) для вычисления регистрируемого домена.define('XOOPS_COOKIE_DOMAIN_USE_PSL', true);
// Явный домен файла cookie; может быть пустым, полным хостом или регистрируемым доменом.define('XOOPS_COOKIE_DOMAIN', '');Рекомендации:
- Оставьте
XOOPS_COOKIE_DOMAINпустым, если вы обслуживаете XOOPS с одного имени хоста или с IP. - Используйте полный хост (например
www.example.com) для ограничения файлов cookie только для этого имени хоста. - Используйте регистрируемый домен (например
example.com), если вы хотите, чтобы файлы cookie были общими наwww.example.com,blog.example.comи т.д. XOOPS_COOKIE_DOMAIN_USE_PSL = trueпозволяет XOOPS правильно разбить составные TLD (co.uk,com.auи т.д.) вместо того, чтобы случайно установить файл cookie на эффективный TLD.
5. Флаги производства в mainfile.php
Заголовок раздела «5. Флаги производства в mainfile.php»mainfile.dist.php поставляется с этими двумя флагами, установленными на false для производства:
define('XOOPS_DB_LEGACY_LOG', false); // отключить устаревшее логирование использования SQLdefine('XOOPS_DEBUG', false); // отключить уведомления о отладкеОставьте их отключены на производстве. Включите их временно в среде разработки или подготовки, когда вы хотите:
- искать оставшиеся вызовы устаревшей базы данных (
XOOPS_DB_LEGACY_LOG = true); - появляются
E_USER_DEPRECATEDуведомления и другой результат отладки (XOOPS_DEBUG = true).
6. Удалите установщик
Заголовок раздела «6. Удалите установщик»После завершения установки:
- Удалите любой переименованный каталог
install_remove_*из веб-корневой. - Удалите любой скрипт
install_cleanup_*.php, который мастер создал во время очистки. - Подтвердите, что каталог
install/больше не доступен по HTTP.
Оставление отключенного, но присутствующего каталога установщика - это низкая серьезность, но избегаемый риск.
7. Держите XOOPS и модули в актуальном состоянии
Заголовок раздела «7. Держите XOOPS и модули в актуальном состоянии»XOOPS следует обычному расписанию исправлений. Подпишитесь на репозиторий GitHub XoopsCore27 для уведомлений о выпусках и обновите сайт и любые модули третьих сторон, когда будет выпущен новый релиз. Обновления безопасности для 2.7.x публикуются на странице “Releases” репозитория.