สำนักวิทยบริการและเทคโนโลยีสารสนเทศ (สวส.)

Office of Academic Resources and Information Technology

SQL Injection คืออะไร

SQL Injection เป็นเทคนิค หรือ รูปแบบ การโจมตีของ hacker โดยอาศัยช่องโหว่ของโปรแกรม
ทำให้สามารถ แอบใส่ คำสั่ง SQL เข้าไปทาง Input ทั้งหลายบน UI  เพื่อที่จะสามารถดึงข้อมูล ออกมาจากฐานข้อมูลได้
หรือแม้กระทั้ง ใช้คำสั่ง INSERT, UPDATE, DELETE, DROP อะไรก็แล้วแต่ที่กระทำกับฐานข้อมูลได้
 
ดังนั้นบน เว็บ ที่มี form input ทั้งหลาย ถ้าหากไม่ตรวจสอบข้อมูล ก่อน post แล้วล่ะก็ ก็อาจจะโดนได้
 
เช่น ตัวอย่างแบบง่ายๆ เพื่อเห็นภาพ
SQL ที่เราใช้ในการ ตรวจสอบสำหรับการ Login
 
SELECT UserID
FROM User
WHERE UserName = '$userName'
 AND Password = '$password'
 
โดยปกติ $userName และ $password ก็จะถูก POST มาจากหน้าฟอร์ม จาก input tag ของ Username และ Password
ในการเข้าสู่ระบบ ถ้าข้อมูลถูกต้องก็จะสามารถเข้าสู่ระบบได้ตามปกติไป
 
แต่ถ้า โดนยัด SQL Injection เข้ามา การ Post ข้อมูลมาจากหน้าฟอร์ม จาก input tag
จะเป็นในลักษณะ แฝงเงื่อนไขของ WHERE CLAUSE มา เช่น
User name:  1' = OR '1 = 1
Password:  1' = OR '1 = 1
 
เวลาโปรแกรมทำงาน ผลลัพธ์ ของ SQL จะเป็นดังนี้
 
SELECT UserID
FROM User
WHERE UserName = '1' = OR '1 = 1'
AND Password = '1' = OR '1 = 1'
 
ทำให้เงื่อนไขเป็นจริงเสมอ ในกรณีนี้อาจได้ข้อมูลของ User ทุกคนในระบบ หรือ ถ้าเขียนโปรแกรมไม่ดี อาจจะทำให้ Login ผ่านฉลุย

ที่มา : http://guru.citec.us/53/sql-injection-คืออะไร-มีหลักการอย่างไร