رفتن به محتوا

پیوست 5: امنیت نصب XOOPS خود را افزایش دهید

پس از نصب XOOPS 2.7.0 مراحل زیر را برای سخت شدن سایت انجام دهید. هر مرحله به صورت جداگانه اختیاری است، اما با هم امنیت پایه نصب را به میزان قابل توجهی افزایش می دهند.

1. ماژول Protector را نصب و پیکربندی کنید

Section titled “1. ماژول Protector را نصب و پیکربندی کنید”

ماژول همراه protector فایروال XOOPS است. اگر در طول ویزارد اولیه آن را نصب نکردید، اکنون آن را از صفحه Admin → Modules نصب کنید.

پنل مدیریت Protector را باز کنید و هشدارهایی را که نمایش می دهد مرور کنید. دستورالعمل‌های قدیمی PHP مانند register_globals دیگر وجود ندارند (PHP 8.2+ آنها را حذف کرده است)، بنابراین دیگر آن هشدارها را نخواهید دید. هشدارهای فعلی معمولاً به مجوزهای دایرکتوری، تنظیمات جلسه و پیکربندی مسیر اعتماد مربوط می شود.

2. mainfile.php و secure.php را قفل کنید

Section titled “2. mainfile.php و secure.php را قفل کنید”

پس از اتمام نصب، سعی می‌کند هر دو فایل را به‌عنوان فقط خواندنی علامت‌گذاری کند، اما برخی از میزبان‌ها مجوزها را برمی‌گردانند. بررسی کنید و در صورت نیاز مجددا درخواست دهید:

  • mainfile.php0444 (مالک، گروه، دیگر فقط خواندنی)
  • xoops_data/data/secure.php0444

mainfile.php ثابت‌های مسیر را تعریف می‌کند (XOOPS_ROOT_PATH، XOOPS_PATH، XOOPS_VAR_PATH، XOOPS_URL، ZXQKEEP000016QXEPX0، و ZXQKEEP000016QXEPX0، و ZXQKEEP000016QXEPX0 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 جلوگیری می کند.

XOOPS 2.7.0 دو ثابت دامنه کوکی را در 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 را از یک نام میزبان یا از یک IP سرویس می دهید، XOOPS_COOKIE_DOMAIN را خالی بگذارید.
  • از میزبان کامل (به عنوان مثال www.example.com) برای محدود کردن کوکی‌ها به آن نام میزبان استفاده کنید.
  • هنگامی که می خواهید کوکی ها در بین www.example.com، blog.example.com و غیره به اشتراک گذاشته شوند، از دامنه قابل ثبت (به عنوان مثال example.com) استفاده کنید.
  • XOOPS_COOKIE_DOMAIN_USE_PSL = true به XOOPS اجازه می دهد تا TLD های ترکیبی (co.uk، com.au، …) را به درستی تقسیم کند به جای اینکه تصادفاً یک کوکی روی TLD مؤثر تنظیم کند.

5. پرچم های تولید در mainfile.php

Section titled “5. پرچم های تولید در mainfile.php”

mainfile.dist.php با این دو پرچم تنظیم شده روی false برای تولید ارسال می شود:

define('XOOPS_DB_LEGACY_LOG', false); // disable legacy SQL usage logging
define('XOOPS_DEBUG', false); // disable debug notices

آنها را در تولید رها کنید. آنها را به طور موقت در یک محیط توسعه یا مرحله‌بندی فعال کنید زمانی که می‌خواهید:

  • پیگیری تماس های پایگاه داده قدیمی (XOOPS_DB_LEGACY_LOG = true
  • اعلامیه های سطح E_USER_DEPRECATED و سایر خروجی های اشکال زدایی (XOOPS_DEBUG = true).

پس از اتمام نصب:

  1. هر دایرکتوری تغییر نام یافته install_remove_* را از ریشه وب حذف کنید.
  2. هر اسکریپت install_cleanup_*.php را که جادوگر در حین پاکسازی ایجاد کرده است، حذف کنید.
  3. تأیید کنید که فهرست install/ دیگر از طریق HTTP قابل دسترسی نیست.

ترک دایرکتوری نصب کننده غیرفعال اما موجود، خطری کم شدت اما قابل اجتناب است.

7. XOOPS و ماژول ها را به روز نگه دارید

Section titled “7. XOOPS و ماژول ها را به روز نگه دارید”

XOOPS از یک پچ منظم پیروی می کند. برای اطلاعیه های انتشار در مخزن XoopsCore27 GitHub مشترک شوید و هر زمان که نسخه جدیدی ارسال شد، سایت خود و هر ماژول شخص ثالث را به روز کنید. به‌روزرسانی‌های امنیتی 2.7.x از طریق صفحه انتشارات مخزن منتشر می‌شوند.