ภาคผนวก 5: เพิ่มความปลอดภัยให้กับการติดตั้ง XOOPS ของคุณ
หลังจากติดตั้ง XOOPS 2.7.0 แล้ว ให้ทำตามขั้นตอนต่อไปนี้เพื่อทำให้ไซต์แข็งแกร่งขึ้น แต่ละขั้นตอนจะเป็นทางเลือกแยกกัน แต่เมื่อรวมกันแล้วจะช่วยเพิ่มความปลอดภัยพื้นฐานของการติดตั้งได้อย่างมาก
1. ติดตั้งและกำหนดค่าโมดูลตัวป้องกัน
หัวข้อที่มีชื่อว่า “1. ติดตั้งและกำหนดค่าโมดูลตัวป้องกัน”โมดูล protector ที่รวมมาให้คือไฟร์วอลล์ XOOPS หากคุณไม่ได้ติดตั้งในระหว่างวิซาร์ดเริ่มต้น ให้ติดตั้งจากหน้าจอผู้ดูแลระบบ → โมดูลทันที

เปิดแผงผู้ดูแลระบบของ 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);การวางไดเร็กทอรีเหล่านี้ไว้นอกรูทเอกสารจะป้องกันการเข้าถึงโดยตรงไปยังแผนผัง vendor/ ของ Composer, เทมเพลตที่แคชไว้, ไฟล์เซสชัน, ข้อมูลที่อัปโหลด และข้อมูลรับรองฐานข้อมูลใน secure.php¤
4. การกำหนดค่าโดเมนคุกกี้
หัวข้อที่มีชื่อว่า “4. การกำหนดค่าโดเมนคุกกี้”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.
5. ธงการผลิตใน mainfile.php
หัวข้อที่มีชื่อว่า “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. ลบตัวติดตั้ง
หัวข้อที่มีชื่อว่า “6. ลบตัวติดตั้ง”หลังจากการติดตั้งเสร็จสิ้น:
- ลบไดเรกทอรี
install_remove_*ที่เปลี่ยนชื่อใดๆ ออกจากเว็บรูท - ลบสคริปต์
install_cleanup_*.phpใดๆ ที่ตัวช่วยสร้างสร้างขึ้นระหว่างการล้างข้อมูล - ยืนยันว่าไม่สามารถเข้าถึงไดเรกทอรี
install/ได้อีกต่อไปผ่าน HTTP
การทิ้งไดเร็กทอรีตัวติดตั้งที่ปิดใช้งานแต่ปรากฏอยู่ถือเป็นความเสี่ยงที่มีความรุนแรงต่ำแต่สามารถหลีกเลี่ยงได้
7. อัปเดต XOOPS และโมดูลให้ทันสมัยอยู่เสมอ
หัวข้อที่มีชื่อว่า “7. อัปเดต XOOPS และโมดูลให้ทันสมัยอยู่เสมอ”XOOPS เป็นไปตามจังหวะการแพตช์ปกติ สมัครรับพื้นที่เก็บข้อมูล XoopsCore27 GitHub เพื่อรับการแจ้งเตือนการเผยแพร่ และอัปเดตไซต์ของคุณและโมดูลของบริษัทอื่นทุกครั้งที่มีการเปิดตัวผลิตภัณฑ์ใหม่ การอัปเดตความปลอดภัยสำหรับ 2.7.x ได้รับการเผยแพร่ผ่านทางหน้าเผยแพร่ของพื้นที่เก็บข้อมูล