在PHP手冊,還有一張紙條:mysql_real_escape_string足以支持反SQL注入嗎?
注意:如果這個功能不是用來 逃生數據,查詢很容易受到 SQL注入式攻擊。
這是否足以防SQL注入?如果沒有,你能舉一個例子和一個很好的解決方案來反SQL注入?
在PHP手冊,還有一張紙條:mysql_real_escape_string足以支持反SQL注入嗎?
注意:如果這個功能不是用來 逃生數據,查詢很容易受到 SQL注入式攻擊。
這是否足以防SQL注入?如果沒有,你能舉一個例子和一個很好的解決方案來反SQL注入?
mysql_real_escape_string
通常足以避免SQL注入。這取決於它是否是無缺陷的,也就是說它有一些未知的機會,它很容易受到攻擊(但這在現實世界中還沒有表現出來)。完全排除概念層面的SQL注入的更好的替代方法是prepared statements。這兩種方法完全取決於你正確應用它們;即使你只是簡單地搞亂了它們,也不會保護你。
最好的解決方案是PDO。
如果您使用的是傳統mysql_query
,那麼通過mysql_real_escape_string()
運行所有數據就足夠了。
什麼是參數化查詢? – Jichao 2010-11-13 05:31:54
參數化查詢也可以在PDO擴展 – stillstanding 2010-11-13 05:32:18
請參閱[mysql_real_escape_string()是否完全防範SQL注入? ](http://stackoverflow.com/questions/1220182/does-mysql-real-escape-string-fully-protect-against-sql-injection)。 – 2010-11-13 05:31:33
絕對是以上的副本 – mikeycgto 2011-06-30 03:45:39