تخطَّ إلى المحتوى

الملحق 5: زيادة أمان تثبيت XOOPS الخاص بك

بعد تثبيت XOOPS 2.7.0، اتخذ الخطوات التالية لتقسية الموقع. كل خطوة اختيارية بشكل فردي، لكن معاً ترفع الخط الأساسي للأمان بشكل كبير.

1. ثبّت وكوّن وحدة الحماية

Section titled “1. ثبّت وكوّن وحدة الحماية”

وحدة protector المجمعة هي جدار الحماية XOOPS. إذا لم تثبّتها أثناء معالج أولي، ثبّتها من شاشة Admin → Modules الآن.

افتح لوحة تحكم Protector واستعرض التحذيرات التي تعرضها. التوجيهات الموروثة PHP مثل register_globals لم تعد موجودة (PHP 8.2+ أزالتها)، لذا لن تشاهد تلك التحذيرات بعد الآن. التحذيرات الحالية عادة ما تتعلق بأذونات الدليل وإعدادات الجلسة وتكوين مسار الثقة.

عندما ينهي المثبت، يحاول وضع علامة على كلا الملفين كقراءة فقط، لكن بعض المضيفات تعيد الأذونات. التحقق واعاد التطبيق إذا لزم الأمر:

  • mainfile.php0444 (المالك، المجموعة، قراءة أخرى فقط)
  • xoops_data/data/secure.php0444

يحدد 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. تكوين نطاق ملف تعريف الارتباط

Section titled “4. تكوين نطاق ملف تعريف الارتباط”

يعرّف XOOPS 2.7.0 ثابتتي نطاق ملف تعريف الارتباط في mainfile.php:

// استخدم قائمة اللاحقة العامة (PSL) لاشتقاق النطاق القابل للتسجيل.
define('XOOPS_COOKIE_DOMAIN_USE_PSL', true);
// نطاق ملف تعريف الارتباط الصريح؛ قد يكون فارغاً أو المضيف الكامل أو النطاق القابل للتسجيل.
define('XOOPS_COOKIE_DOMAIN', '');

إرشادات:

  • اترك XOOPS_COOKIE_DOMAIN فارغاً إذا قمت بخدمة XOOPS من اسم مضيف واحد أو من IP.
  • استخدم المضيف الكامل (على سبيل المثال www.example.com) لنطاق ملفات تعريف الارتباط لاسم المضيف ذلك فقط.
  • استخدم النطاق القابل للتسجيل (على سبيل المثال example.com) عندما تريد مشاركة ملفات تعريف الارتباط عبر www.example.com و blog.example.com وما إلى ذلك.
  • XOOPS_COOKIE_DOMAIN_USE_PSL = true يدع XOOPS تقسيم TLDs المركبة بشكل صحيح (co.uk و com.au و …) بدلاً من تعيين ملف تعريف الارتباط بطريق الخطأ على TLD الفعال.

5. علامات الإنتاج في mainfile.php

Section titled “5. علامات الإنتاج في mainfile.php”

يحتوي mainfile.dist.php على هذين العلمين المضبوطين على false للإنتاج:

define('XOOPS_DB_LEGACY_LOG', false); // تعطيل تسجيل استخدام SQL الموروث
define('XOOPS_DEBUG', false); // تعطيل إشعارات التصحيح

اتركهم مغلقين في الإنتاج. فعّلهم مؤقتاً في بيئة تطوير أو تدريج عندما تريد:

  • البحث عن استدعاءات قاعدة البيانات الموروثة المتبقية (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 عبر صفحة الإصدارات بمستودع المضيف.