Bancha
Group Blog
 
All blogs
 
SQL Injection

SQL Injection

//xsodusdev.blogspot.com/2015/06/sql-injection.html

เขียนโดย Akkapon Somjai ที่ 07:39 

   จริงๆเรื่องนี้เป็นเรื่องที่เก่ามากเป็น 10 ปีแล้ว และมีการเขียนเรื่องนี้ไว้ทั้งในวิกิและในบล็อกต่างๆเป็นจำนวนมาก หากแต่โปรแกรมเมอร์มือใหม่อาจไม่ค่อยใส่ใจหรือไม่ทราบปัญหาตรงนี้อย่างจริงจังนัก ทั้งที่หากถูกเจาะระบบจากส่วนนี้แล้วจะเกิดความเสียหายอย่างใหญ่หลวงถึงขั้นข้อมูลลูกค้าหายไปจากฐานข้อมูลทั้งหมดได้เลย ผมเลยอยากจะเขียนบทความนี้อีกครั้ง เพื่อให้เป็นความรู้และอยากให้ทุกคนตระหนักถึงปัญหาอย่างจริงจังเสียที


SQL Injection คืออะไร


   คือช่องโหว่ที่เกิดจากการส่งผ่านข้อมูลจากผู้ใช้เข้ามายัง SQL โดยตรง ยกตัวอย่างเช่น หากเราจะทำระบบล็อกอินเราก็ต้องรับค่า Username กับ Password ด้วยการเขียนโค้ดแบบนี้


หาก ผู้ใช้ ป้อนค่า

username เป็น ชื่อผู้ใช้ใดๆก็ได้ที่อยู่ในระบบ

password  เป็น  ' OR '1'='1

จะทำให้สามารถล็อกอินเข้าระบบเป็นใครก็ได้ทันที เนื่องจาก SQL String มีค่าเป็น

SELECT * FROM db_user WHERE username='[ชื่อผู้ใช้]' AND password= '' OR '1'='1';

เท่ากับว่าเงื่อนไขนี้เป็นจริงเสมอ


ในกรณีเลวร้ายสุดคือ ลบข้อมูลในตารางทิ้งซะเลย โดยการกรอกค่า

username เป็น ' OR '1'='1

password เป็น ' OR '1'='1' ; DELETE FROM db_user WHERE '1'='1

ทำให้ SQL String มีค่าเป็น

SELECT * FROM db_user WHERE username='' OR '1'='1' AND password= '' OR '1'='1' ; DELETE FROM db_user WHERE '1'='1' ;


ส่วนวิธีการแก้ไขปัญหาตรงจุดนี้ของ PHP แนะนำให้ใช้ Prepare Statement เข้ามาคลุม แล้วส่งค่าผ่านฟังก์ชั่น bindParam แทนที่การแทรกลงใน String ตรงๆ จากตัวอย่างดังกล่าวโค้ดจะมีหน้าตาประมาณนี้ครับ


ส่วนภาษาอื่นก็มีเช่นกัน สามารถค้นหาจากกูเกิ้ลโดยพิมพ์ในช่องค้นหาเป็น "[ภาษา] Prepare Statement"


เขียนโดย Akkapon Somjai ที่ 07:39 

//xsodusdev.blogspot.com/2015/06/sql-injection.html





Create Date : 04 มิถุนายน 2558
Last Update : 4 มิถุนายน 2558 19:07:38 น. 0 comments
Counter : 930 Pageviews.

ชื่อ : * blog นี้ comment ได้เฉพาะสมาชิก
Comment :
  *ส่วน comment ไม่สามารถใช้ javascript และ style sheet
 

rajasit
Location :


[Profile ทั้งหมด]

ฝากข้อความหลังไมค์
Rss Feed
Smember
ผู้ติดตามบล็อก : 5 คน [?]




Friends' blogs
[Add rajasit's blog to your web]
Links
 

 Pantip.com | PantipMarket.com | Pantown.com | © 2004 BlogGang.com allrights reserved.