ในสถานการณ์ที่ระบบสารสนเทศถูกโจมตีด้วย SQL Injection ข้อใดคือวิธีการป้องกันที่ถูกต้องและมีประสิทธิภาพสูงสุดในระดับการพัฒนาโปรแกรม
กใช้ Parameterized Queries หรือ Prepared Statements แทนการต่อ SQL String โดยตรง
ขจำกัดความยาว Input ของผู้ใช้ไม่เกิน 50 ตัวอักษร
คติดตั้ง Firewall เพิ่มเติมหน้าเซิร์ฟเวอร์
งเปลี่ยนชื่อตารางฐานข้อมูลให้ยากต่อการเดา
เฉลยอธิบาย
Parameterized Queries / Prepared Statements คือการป้องกัน SQL Injection ที่มีประสิทธิภาพสูงสุดในระดับโค้ด โดยแยก SQL Command ออกจากข้อมูลที่ผู้ใช้ป้อน ทำให้ข้อมูลถูกส่งเป็น Parameter ไม่ใช่ส่วนหนึ่งของ SQL ตัวเลือก A แยกคำสั่งออกจากข้อมูลที่ป้อน จึงป้องกัน injection ที่ต้นเหตุ ส่วน B และ D เป็นการพรางหรือจำกัดที่ข้ามได้ และ C เป็นมาตรการเสริมที่ไม่แทนการเขียน query อย่างปลอดภัย