addslashes()
สามารถป้องกันได้ครับ
แต่การมีผลต่อ SQL INJECTION มันจะไม่สามารถสรุปได้ตรงๆหรอกครับ ว่าเราจะใช้อะไรกันได้ หรือไม่ได้ มันอยู่ที่ เคส SQL Cmd จริงๆครับ
แต่ addslashes() เป็น 1 ในทางเลือกการป้องกัน SQL INJECTION ที่ได้ผล ครับ
addslashes() ก็มีเคสที่โดน sql injection ได้
mysql_real_escape_string() ก็มีเคสที่ยังโดน sql injection ได้
mysql_real_escape_string php ปรับเป็น deprecated ตั้งแต่ 5.3 แล้ว current stable ปัจจุบันก็เอาออกไปแล้ว ไม่สามารถใช้งานได้อีก
prepare statement >> กันได้ 100%
prepare statement >> รับมายังไงก็ใส่ไปได้เลยไม่เสียเวลานั่ง real escape + addslash
prepare statement >> อ่าน query ได้ง่ายกว่าเยอะมากๆ
เค้าใช้ prepare statement กันหมดทั้งโลกแล้วครับ
framework ที่ทำฝั่ง model มาให้ ก็ใช้กันหมด
ทุก ORM framework เค้าก็ใช้ prepare statement กันหมด
ผมยังไม่เห็นว่า การที่ต้องไปนั่ง addslashes() ทุกครั้งที่รับ parameter มา มันน่าใช้กว่าตรงไหนเลยครับ ทำให้รำคาญซะอีก