ข้ามไปยังเนื้อหา

ภาคผนวก 5: เพิ่มความปลอดภัยให้กับการติดตั้ง XOOPS ของคุณ

หลังจากติดตั้ง XOOPS 2.7.0 แล้ว ให้ทำตามขั้นตอนต่อไปนี้เพื่อทำให้ไซต์แข็งแกร่งขึ้น แต่ละขั้นตอนจะเป็นทางเลือกแยกกัน แต่เมื่อรวมกันแล้วจะช่วยเพิ่มความปลอดภัยพื้นฐานของการติดตั้งได้อย่างมาก

โมดูล protector ที่รวมมาให้คือไฟร์วอลล์ XOOPS หากคุณไม่ได้ติดตั้งในระหว่างวิซาร์ดเริ่มต้น ให้ติดตั้งจากหน้าจอผู้ดูแลระบบ → โมดูลทันที

เปิดแผงผู้ดูแลระบบของ 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 ได้ยากขึ้นมาก

หากคุณยังไม่ได้ดำเนินการ ให้ย้ายทั้งสองไดเร็กทอรีนี้ให้อยู่เหนือรูทเว็บของคุณหนึ่งระดับแล้วเปลี่ยนชื่อ จากนั้นอัปเดตค่าคงที่ที่สอดคล้องกันใน 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_COOKIE_DOMAIN ว่างไว้หากคุณให้บริการ XOOPS จากชื่อโฮสต์เดียวหรือจาก IP
  • ใช้โฮสต์แบบเต็ม (เช่น www.example.com) เพื่อกำหนดขอบเขตคุกกี้เป็นชื่อโฮสต์นั้นเท่านั้น
  • ใช้โดเมนที่จดทะเบียนได้ (เช่น example.com) เมื่อคุณต้องการแชร์คุกกี้ระหว่าง www.example.com, blog.example.com ฯลฯ
  • XOOPS_COOKIE_DOMAIN_USE_PSL = true ให้ XOOPS แยก TLD แบบผสมอย่างถูกต้อง (co.uk, com.au, …) แทนที่จะตั้งใจตั้งค่าคุกกี้บนคุกกี้ที่มีประสิทธิภาพ TLD.

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

การทิ้งไดเร็กทอรีตัวติดตั้งที่ปิดใช้งานแต่ปรากฏอยู่ถือเป็นความเสี่ยงที่มีความรุนแรงต่ำแต่สามารถหลีกเลี่ยงได้

XOOPS เป็นไปตามจังหวะการแพตช์ปกติ สมัครรับพื้นที่เก็บข้อมูล XoopsCore27 GitHub เพื่อรับการแจ้งเตือนการเผยแพร่ และอัปเดตไซต์ของคุณและโมดูลของบริษัทอื่นทุกครั้งที่มีการเปิดตัวผลิตภัณฑ์ใหม่ การอัปเดตความปลอดภัยสำหรับ 2.7.x ได้รับการเผยแพร่ผ่านทางหน้าเผยแพร่ของพื้นที่เก็บข้อมูล