ในการพัฒนา Web Application ที่ต้องการความปลอดภัยสูง การป้องกัน SQL Injection ด้วย Prepared Statements แตกต่างจากการใช้ mysql_real_escape_string() อย่างไรในเชิงหลักการ

ทั้งสองวิธีป้องกัน SQL Injection ได้เท่ากันในทุกกรณี ขึ้นอยู่กับความชอบของนักพัฒนา
Prepared Statements แยก SQL Structure กับข้อมูลออกจากกันโดยสิ้นเชิง ทำให้ข้อมูลไม่มีโอกาสถูกตีความเป็น SQL Command ส่วน escape เพียงแค่แก้ไขอักขระพิเศษซึ่งอาจมีช่องโหว่
Prepared Statements ทำงานเร็วกว่า mysql_real_escape_string() เสมอ แต่ความปลอดภัยเท่ากัน
mysql_real_escape_string() ปลอดภัยกว่า Prepared Statements สำหรับตัวเลข

เฉลยอธิบาย

Prepared Statements (PDO หรือ MySQLi) ทำงานโดยส่ง SQL Template ไปยังฐานข้อมูลก่อน แล้วจึงส่งข้อมูลแยกกัน ทำให้ Database Engine รู้ว่าส่วนใดคือ Structure และส่วนใดคือ Data อย่างแน่นอน จึงไม่มีทางที่ User Input จะกลายเป็น SQL Command ได้ ส่วน escape_string เพียงแค่ Sanitize อักขระในสตริง ซึ่งมีช่องโหว่ที่เป็นไปได้ในบางชุดอักขระและ Context นอกจากนี้ mysql_real_escape_string() เป็น Extension ที่ถูก Deprecated แล้วใน PHP

ข้อสอบอื่นในวิชาหลักการพื้นฐานในการเขียนโปรแกรม และความรู้เกี่ยวกับ การพัฒนา Web Application เช่น PHP,HTML, JavaScript และเทคโนโลยีทางเว็บ

ดูข้อสอบวิชานี้ทั้งหมด →