พึ่งเคยใช้งานครั้งแรกโปรดอ่านที่นี่! howtouse!
x
  • Register
หางานด้าน IT อยู่เหรอ?

[PHP] mysql_real_escape_string สามารถป้องกัน SQL Injection ได้หรือไม่ ?

+6 votes

Function mysql_real_escape_string สามารถป้องกัน SQL Injection ได้หรือไม่ครับ

ถ้าหากป้องกันไม่ได้ หรือไม่เต็มที่ จะสามารถป้องกันการ Injection ได้อย่างไรให้มีประสิทธิภาพครับ 

ถามเมื่อ May 11, 2012 in PHP & MySQL & Ajax โดย Sirbank (188 คะแนน)
   

2 Answers

+6 votes

ได้ครับ ถ้าใช้กับค่าที่รับเข้ามาจาก input

ตาม Example 1 ใน http://php.net/manual/en/function.mysql-real-escape-string.php

ตอบเมื่อ May 11, 2012 โดย Krurkrit Phoosakul (1,174 คะแนน)
+6 votes

แต่อาจจะกัน Blind SQL Injection ไม่ได้นะครับ เพราะคำสั่งนี้ไม่ได้กรองพวกตัว ^ (XOR) ออกไปด้วย
ตัวอย่างเช่น

info.php?num=1 and 1=0
info.php?num=1%1%1%0
info.php?num=0^(locate(0x61,(select id from users where num=1),1)=1)

ยังไงวิธีกันก็คือ ต้องออกแบบ Query String ดีๆ ควบคู่ไปกับการใช้ escape string ครับ
ตอบเมื่อ May 11, 2012 โดย Digitalboyz Adisorn (131 คะแนน)
ขอถามหน่อยครับ ถ้าจะแก้แบบนี้ ตอนเรียก Query ต้องใส่เป็น
WHERE ID = '1' แทน WHERE ID=1
ประมาณนี้รึเปล่าครับ
ใช่ครับ เพราะถ้าใส่ตัวเลขตรงๆ มัน inject เครื่องหมายทางคณิตศาสตร์ได้
ทุกทีผมจะแยก การ input ตลอดอ่ะ
mysql_real_escape_string
ก่อนแล้วค่อยไปใส่ ใน query string
เพราะถ้าไม่มี ' ตัวนี้เปิดและปิดจิตใจมันว้าเหว่

Related questions

+3 votes
1 คำตอบ
369 views ถามเมื่อ Apr 23, 2012 in Network-Server โดย anonymous
+1 vote
2 คำตอบ
378 views ถามเมื่อ Oct 10, 2013 in PHP & MySQL & Ajax โดย Nattawat Marsh (103 คะแนน)
0 votes
2 คำตอบ
+1 vote
1 คำตอบ
392 views ถามเมื่อ Jul 17, 2012 in PHP & MySQL & Ajax โดย Non Madden's (105 คะแนน)
...