วิธีป้องกันเว็บไซต์ Joomla จากการโจมตี Cross-Site Scripting

ป้องกัน Cross-Site Scripting (XSS) ใน Joomla โดยจำกัด HTML ที่ผู้ใช้ส่งเข้ามา อัปเดตส่วนเสริม และตรวจโค้ดที่นำข้อมูลไปแสดงบนหน้าเว็บ XSS เกิดเมื่อเว็บไซต์แสดงข้อมูลที่มีสคริปต์โดยไม่จัดการอย่างเหมาะสม ทำให้โค้ดอาจทำงานในเบราว์เซอร์ของผู้เข้าชม

❶ จำกัด HTML ที่ผู้ใช้ส่งเข้ามา

① ตรวจการตั้งค่า Text Filters

ในหลังบ้าน Joomla ให้ตรวจตัวเลือก Text Filters ใน Global Configuration การกรองจะมีผลกับข้อมูลที่ผู้ใช้ในแต่ละกลุ่มส่งผ่านฟอร์มแก้ไขเนื้อหา ชื่อเมนูอาจต่างกันตามเวอร์ชัน

② อย่าเปิด No Filtering ให้กลุ่มที่ไม่ไว้ใจ

การไม่กรอง HTML อาจจำเป็นกับผู้ดูแลที่เชื่อถือและต้องใส่โค้ด แต่ไม่ควรเปิดให้กลุ่มผู้ใช้ทั่วไปหรือสมาชิกที่ไม่รู้จัก เพราะอาจส่งโค้ดที่ทำงานในเบราว์เซอร์ของผู้อื่นได้

③ จำกัดสิทธิ์การเผยแพร่เนื้อหา

ให้เฉพาะผู้ใช้ที่จำเป็นส่งหรือเผยแพร่เนื้อหา และกำหนดสิทธิ์ตามหน้าที่ ตรวจการตั้งค่าของส่วนเสริมที่เปิดให้ผู้ใช้ส่งความคิดเห็น โปรไฟล์ หรือข้อมูลอื่น

❷ ดูแล Joomla และส่วนเสริม

① อัปเดต Joomla และส่วนเสริม

ติดตั้งรุ่นที่ยังได้รับการดูแลและแก้ไขช่องโหว่ ตรวจประกาศจาก Joomla และผู้พัฒนาส่วนเสริม โดยเฉพาะส่วนเสริมที่รับข้อมูลจากผู้ใช้หรือแสดงเนื้อหาบนหน้าเว็บไซต์

② ถอนส่วนเสริมที่ไม่ใช้หรือไม่มีการดูแล

ลบส่วนเสริมที่ไม่จำเป็น หรือหาทางเลือกใหม่หากผู้พัฒนาไม่ออกอัปเดตและไม่มีช่องทางแจ้งปัญหาความปลอดภัย

③ ตรวจส่วนเสริมที่แสดงข้อมูลจากผู้ใช้

ตรวจฟอร์มความคิดเห็น ฟอร์มติดต่อ และส่วนเสริมสมาชิกว่าใช้การตรวจข้อมูลฝั่งเซิร์ฟเวอร์และแสดงผลอย่างปลอดภัยหรือไม่ การตรวจในเบราว์เซอร์อย่างเดียวไม่เพียงพอ

❸ ตรวจโค้ดที่นำข้อมูลไปแสดงบนหน้าเว็บ

① ให้ผู้พัฒนาตรวจการแสดงผลข้อมูล

หากมีเทมเพลตหรือส่วนเสริมที่พัฒนาเอง ให้ผู้พัฒนาตรวจทุกจุดที่นำข้อความจากผู้ใช้มาแสดง และ escape ข้อมูลให้เหมาะกับบริบท เช่น HTML หรือ attribute ของ HTML

② แยกข้อความธรรมดากับ HTML ที่ต้องใช้งาน

ข้อความทั่วไปควรถูกแสดงเป็นข้อความ ไม่ใช่ตีความเป็น HTML หากเว็บไซต์ต้องอนุญาต HTML บางชนิด ให้จำกัดแท็กและคุณลักษณะที่อนุญาตผ่านวิธีที่เหมาะสม แทนการเปิด HTML ทุกชนิด

③ อย่าพึ่งการกรองเพียงขั้นตอนเดียว

แนวทางที่ดีคือกรองหรือตรวจข้อมูลเมื่อรับเข้า และ escape เมื่อแสดงผล หากใช้ส่วนเสริม ให้ตรวจวิธีจัดการข้อมูลและอัปเดตตามคำแนะนำของผู้พัฒนา

❹ ทดสอบและเฝ้าระวังหลังตั้งค่า

① ทดสอบฟอร์มและเนื้อหาที่ผู้ใช้ส่ง

ทดสอบในสภาพแวดล้อมที่เหมาะสมว่าฟอร์มยังใช้งานได้ และข้อมูลที่ส่งถูกแสดงเป็นข้อความตามที่ต้องการ ไม่ทำให้สคริปต์ทำงาน

② ตรวจเนื้อหาและไฟล์ที่เปลี่ยนแปลงผิดปกติ

ตรวจบทความ โมดูล เทมเพลต และส่วนเสริมเมื่อพบสคริปต์หรือเนื้อหาที่ไม่ได้เพิ่มเอง เก็บข้อมูลก่อนแก้ไขหากสงสัยว่าเว็บไซต์ถูกเจาะ

③ ตรวจ Log และประกาศช่องโหว่

หมั่นตรวจ Log ของ Joomla และโฮสติ้ง รวมถึงประกาศความปลอดภัยของ Joomla และผู้พัฒนาส่วนเสริม เพื่อให้ตอบสนองได้เมื่อพบการโจมตีหรือมีรุ่นแก้ไข

ComSiam แนะนำให้เริ่มจากจำกัดสิทธิ์ผู้ส่งเนื้อหา ตรวจ Text Filters และอัปเดตส่วนเสริมที่เกี่ยวข้องกับฟอร์มและการแสดงผล

หากเว็บไซต์มีโค้ดพัฒนาหรือเทมเพลตเฉพาะ ให้ผู้พัฒนาตรวจการกรองข้อมูลและการแสดงผลร่วมกัน ComSiam แนะนำให้ทดสอบหลังเปลี่ยนค่ากรอง เพื่อให้ความปลอดภัยเพิ่มขึ้นโดยไม่ทำให้เนื้อหาที่จำเป็นหายไป