รายการกาเครื่องหมายที่มีเครื่องหมาย (*) ระบุว่ารายการนั้นเป็นวิธีแก้ปัญหาขั้นพื้นฐานสำหรับปัญหาที่เกี่ยวข้อง และคุณควรพยายามอย่างเต็มที่เพื่อกรอกเนื้อหาเหล่านี้ให้ครบถ้วน รายการที่ไม่มีเครื่องหมาย (*) ระบุว่ารายการนั้นไม่สามารถขจัดอันตรายด้านความปลอดภัยได้อย่างสมบูรณ์ แต่สามารถหลีกเลี่ยงปัญหาด้านความปลอดภัยได้ด้วยวิธีนี้เท่านั้น
การฉีด SQL
(*) ใช้ฟังก์ชันการเชื่อมโยงตัวแปร SQL เมื่อรวมคำสั่ง SQL
(*) หากฐานข้อมูลไม่มีการเชื่อมโยงตัวแปร คุณจะต้องหลีกเลี่ยงตัวแปรทั้งหมดที่ประกอบเป็น SQL และไม่แสดงข้อความแสดงข้อผิดพลาดในเบราว์เซอร์
กำหนดสิทธิ์ที่เหมาะสมสำหรับผู้ใช้ที่เข้าถึงฐานข้อมูล
ระบบปฏิบัติการฉีดบรรทัดคำสั่ง
(*) หลีกเลี่ยงการใช้ภาษาที่สามารถเริ่มคำสั่งเชลล์ได้ หากคุณได้รับอนุญาตให้เริ่มคำสั่งเชลล์ คุณจะต้องตรวจสอบตัวแปรทั้งหมดในพารามิเตอร์ของฟังก์ชันเพื่อให้แน่ใจว่ารวมเฉพาะการดำเนินการทางกฎหมายเท่านั้น และอย่าตรวจสอบพารามิเตอร์ชื่อพาธ/ การข้ามผ่านไดเรกทอรี
(*) อย่าใช้พารามิเตอร์ที่ส่งเข้ามาจากภายนอกโดยตรงเป็นชื่อไฟล์
(*) จำกัดการดำเนินการเปิดไฟล์ไว้ที่ไดเร็กทอรีคงที่และห้ามมิให้ชื่อไฟล์มีเส้นทาง ตั้งค่าสิทธิ์การเข้าถึงไฟล์บนเว็บเซิร์ฟเวอร์ให้ถูกต้อง
(*) ใช้เนื้อหาที่เดายากเป็นรหัสเซสชัน
(*) อย่าบันทึก ID เซสชันใน URL
(*) ตั้งค่าคุณลักษณะที่ปลอดภัยสำหรับคุกกี้ที่ใช้ในโปรโตคอล https
(*) สร้างเซสชันใหม่หลังจากเข้าสู่ระบบสำเร็จ
(*) หลังจากเข้าสู่ระบบสำเร็จ ให้สร้างข้อมูลลับนอกเหนือจากรหัสเซสชัน และตรวจสอบทุกครั้งที่คุณเยี่ยมชมเพจ อย่าใช้ค่าคงที่เป็นรหัสเซสชัน
เมื่อบันทึกรหัสเซสชันลงในคุกกี้ ให้กำหนดวันหมดอายุ การโจมตีด้วยสคริปต์ข้ามไซต์ (XSS)
วิธีแก้ปัญหาเมื่อป้อนเนื้อหา HTML ไม่ได้รับอนุญาต
(*) ทุกอย่างที่ส่งออกไปยังเพจจะต้องเป็น Escape
(*) อนุญาตให้ใช้เฉพาะ URL ที่ขึ้นต้นด้วย "http://" หรือ "https://" เมื่อแสดง URL
(*) อย่าสร้างเนื้อหา <script>…</script> แบบไดนามิก
(*) อย่าอ่านสไตล์ชีตจากเว็บไซต์ภายนอก วิธีแก้ปัญหาในการตรวจสอบเนื้อหาอินพุตเมื่ออนุญาตให้ป้อนเนื้อหา HTML
(*) แยกวิเคราะห์เนื้อหา HTML อินพุต สร้างแผนผังการแยกวิเคราะห์ จากนั้นแยกส่วนที่ไม่ใช่สคริปต์ ใช้สคริปต์เพื่อลบสตริงที่เกี่ยวข้องในเนื้อหา HTML อินพุต วิธีแก้ปัญหาทั่วไป
(*) ระบุแอตทริบิวต์ชุดอักขระของ Content-Type อีกครั้งในส่วนหัว HTTP ของการตอบกลับ เพื่อหลีกเลี่ยงการรั่วไหลของข้อมูลคุกกี้ ควรปิดใช้งานวิธีการติดตามและควรตั้งค่าแอตทริบิวต์ HttpOnly สำหรับการปลอมแปลงคำขอข้ามไซต์ทั้งหมด (สสส.)
(*) หน้าทั้งหมดเข้าถึงได้ผ่าน POST ข้อมูลบางส่วนจะถูกสร้างขึ้นแบบสุ่มในส่วนที่ซ่อนอยู่ของหน้าก่อนหน้า หลังจากส่งแล้ว จะตรวจสอบข้อมูลและดำเนินการเฉพาะเมื่อถูกต้องเท่านั้น
(*) ต้องใช้รหัสผ่านอีกครั้งก่อนดำเนินธุรกิจ
(*) ยืนยันว่าผู้อ้างอิงถูกต้องหรือไม่ ให้ดำเนินการที่สำคัญและส่งอีเมลไปยังที่อยู่อีเมลที่กำหนดไว้ล่วงหน้าเท่านั้น
การแทรกส่วนหัว HTTP
(*) อย่าส่งออกส่วนหัว HTTP โดยตรง แต่ใช้ API เอาต์พุตข้อมูลส่วนหัวที่จัดทำโดยสภาพแวดล้อมที่ทำงานอยู่
(*) เมื่อไม่สามารถใช้ API ได้ จะต้องห้ามการขึ้นบรรทัดใหม่ในข้อมูลส่วนหัวของอินพุต
(*) อย่าใช้พารามิเตอร์ภายนอกเป็นข้อมูลส่วนหัวของอีเมล เมื่อคุณต้องใช้พารามิเตอร์ภายนอกเพื่อตั้งค่าข้อมูลส่วนหัว ให้ลบอักขระที่เป็นอันตราย
คำชี้แจงลิขสิทธิ์: คุณสามารถพิมพ์ซ้ำได้ตามต้องการ แต่ต้องอ้างอิงผู้แต่งต้นฉบับ Charlee เมื่อพิมพ์ซ้ำ
ลิงค์ต้นฉบับ: http://tech.idv2.com/2008/04/19/secure-website-checklist/
ข้อมูลอ้างอิงกลยุทธ์การใช้งานเฉพาะ: รายการตรวจสอบความปลอดภัยของแนวทางปฏิบัติ PHP