Додаток 5: Підвищте безпеку установки XOOPS
Після встановлення XOOPS 2.7.0 виконайте наведені нижче дії, щоб посилити сайт. Кожен крок є необов’язковим окремо, але разом вони значно підвищують базову безпеку встановлення.
1. Встановіть і налаштуйте модуль Protector
Section titled “1. Встановіть і налаштуйте модуль Protector”Модуль protector, що входить у комплект, є брандмауером XOOPS. Якщо ви не встановили його під час початкового майстра, встановіть його з екрана Адміністратор → Модулі зараз.

Відкрийте панель адміністратора Protector і перегляньте попередження, які вона відображає. Застарілі директиви PHP, такі як register_globals, більше не існують (PHP 8.2+ їх видалено), тому ви більше не бачитимете цих попереджень. Поточні попередження зазвичай стосуються дозволів каталогу, налаштувань сеансу та конфігурації довірчого шляху.
2. Заблокуйте mainfile.php і secure.php
Section titled “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/ за межі кореня документа
Section titled “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);Розміщення цих каталогів поза коренем документа запобігає прямому доступу до дерева vendor/ Composer, кешованих шаблонів, файлів сеансу, завантажених даних і облікових даних бази даних у secure.php.
4. Конфігурація домену cookie
Section titled “4. Конфігурація домену cookie”XOOPS 2.7.0 містить дві константи домену cookie в mainfile.php:
// Use the Public Suffix List (PSL) to derive the registrable domain.define('XOOPS_COOKIE_DOMAIN_USE_PSL', true);
// Explicit cookie domain; may be blank, the full host, or the registrable domain.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 правильно розділяти складені домени верхнього рівня (co.uk,com.au, …) замість випадкового встановлення файлу cookie на діючому домені верхнього рівня.
5. Виробничі прапори в mainfile.php
Section titled “5. Виробничі прапори в mainfile.php”mainfile.dist.php поставляється з цими двома прапорами, встановленими на false для виробництва:
define('XOOPS_DB_LEGACY_LOG', false); // disable legacy SQL usage loggingdefine('XOOPS_DEBUG', false); // disable debug noticesЗалиште їх у виробництві. Тимчасово ввімкніть їх у середовищі розробки чи постановки, якщо ви хочете:
- виявляти застарілі виклики бази даних (
XOOPS_DB_LEGACY_LOG = true); - поверхневі повідомлення
E_USER_DEPRECATEDта інші результати налагодження (XOOPS_DEBUG = true).
6. Видаліть інсталятор
Section titled “6. Видаліть інсталятор”Після завершення встановлення:
- Видаліть будь-який перейменований каталог
install_remove_*з кореневого веб-сайту. - Видаліть усі сценарії
install_cleanup_*.php, створені майстром під час очищення. - Переконайтеся, що каталог
install/більше не доступний через HTTP.
Залишення вимкненого, але наявного каталогу інсталятора є низьким ризиком, але якого можна уникнути.
7. Тримайте XOOPS і модулі в актуальному стані
Section titled “7. Тримайте XOOPS і модулі в актуальному стані”XOOPS дотримується звичайної каденції патчів. Підпишіться на репозиторій XoopsCore27 GitHub, щоб отримувати сповіщення про випуски, і оновлюйте свій сайт і будь-які сторонні модулі щоразу, коли надходить новий випуск. Оновлення системи безпеки для версії 2.7.x публікуються на сторінці випусків сховища.