SQL Injection


SQL-Injection Hack

SQL Injection

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

สาเหตุ:

ไม่ได้ทำการตรวจสอบข้อมูลที่ผู้ใช้ใส่เข้ามาก่อนการนำไปใช้งาน เช่น ตอ้งการให้ใส่ password ซึ่งมี ส่วนที่ใช้ตรวจสอบ password ดังนี้
Query = "SELECT * FROM product WHERE Password='$input'";
แต่ผู้ใช้ทำการใส่ ข้อมูลเป็น a' or 1=1--
ดังนั้น query ที่ได้จะเป้น
Query = "SELECT * FROM product WHERE Password='a' or 1=1--'";
จะเห็นว่าเมื่อนำไช้งานแล้ว จะสามารถเรียกดูข้อมูลได้เสมอ เนื่องจาก 1=1 เป็นจริง

อันตราย:

ผู้ใช้สามารถที่จะเรียกดู หรือแก้ไขฐานข้อมูลได้อย่างอิสระ

วิธีป้องกัน:

ทำการตรวจสอบข้อมูลก่อนนำไปใช้ว่ามีลักษณะตรงตามที่ต้องการหรือไม่ และทำการ encode ตัวอักษรที่รับมาเสมอ

ตัวอย่างช่องโหว่

Nessus ID

Name

วิธีแก้ไข

11139 wpoison (nasl version) ตรวจสอบการนำข้อมูลไปใช้ให้รอบคอบ
คำสำคัญ (Tags): #sql-injection#hack
หมายเลขบันทึก: 62120เขียนเมื่อ 22 พฤศจิกายน 2006 14:25 น. ()แก้ไขเมื่อ 3 พฤษภาคม 2012 10:41 น. ()สัญญาอนุญาต: จำนวนที่อ่านจำนวนที่อ่าน:


ความเห็น (2)
พบปัญหาการใช้งานกรุณาแจ้ง LINE ID @gotoknow
ClassStart
ระบบจัดการการเรียนการสอนผ่านอินเทอร์เน็ต
ทั้งเว็บทั้งแอปใช้งานฟรี
ClassStart Books
โครงการหนังสือจากคลาสสตาร์ท