ASP.NET Data Access General FAQ: SQL injection คืออะไร และวิธีการป้องกัน

คำตอบ ASP.NET Data Access General FAQ: SQL injection คืออะไร และวิธีการป้องกัน

ตอบทั้งหมด

  • 21 พฤษภาคม 2555 2:55
    ผู้ดูแล
     
     คำตอบ

    SQL injection ไม่ปลอดภยัต่อการแก้ไขและรันคำสั่ง SQL command 
    โดยส่วนใหญ่
    SQL injection มักจะ replace หรือ add ไปที่ queries ที่ได้ทำการ execute ไปแล้ว
    และเมื่อมีการเชื่อมต่อ
    string เพื่อสร้าง SQL statement โดยการป้อนข้อมูลจาก user
    ก็อาจจะทำให้เกิด
    SQL injection
    ยกตัวอย่างเช่น
    SQL statement ที่ใช้ในการ verify password ของ user

    sql = "select * from UserInfo where password='" + password + "'";

    โดยป้อนข้อมูลต่อไปนี้เพื่อหลีกเลี่ยงการตรวจสอบ password

    password = "' or 1=1 --";

    ในบางกรณี user อาจใช้คำสั่งตัวคั่น (; ) เพื่อเพิ่ม SQL command ในการป้อนข้อมูลของ user เช่นในตัวอย่างนี้

    ; DROP TABLE

    และเพื่อหลีกเลี่ยงการเกิด SQL injection การใช้คำสั่ง parameter ใน SQL queries จะช่วยทำการ validate การป้อนข้อมูลของ user

    โดยใน single quotation จะแสดงถึงรูปแบบอื่นที่ได้ผ่านการตรวจสอบแล้ว โดยตัวอย่างนี้จะไม่ทำให้เกิด SQL injection แม้ว่าจะใช้ password ไม่ถูกต้องก็ตาม


    Supa Sethasiripong [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    • ทำเครื่องหมายเป็นคำตอบโดย supa_sModerator 22 พฤษภาคม 2555 3:13
    •