2012-03-02 65 views
2

如果我正在使用MySQL 5.3中的預準備語句,是否還需要使用mysql_escape_string來避免SQL注入攻擊?MySQL準備好的語句是否仍然需要使用mysql_escape_string

+1

不,也是這個問題是無數人的重複 – Phil 2012-03-02 01:20:21

+0

可能的重複[停止SQL注入PHP的最佳方法](http://stackoverflow.com/questions/60174/best-way-to-stop-sql -injection-in-php) – Phil 2012-03-02 01:21:55

+0

[PHP MySQLi準備的查詢綁定參數是否安全?](http://stackoverflow.com/questions/1561586/are-php-mysqli-prepared-queries-with-bound-參數 - 安全) – outis 2012-03-26 02:06:28

回答

3

PDO應該照顧你的逃生/消毒。假設你的意思是:

$db->prepare('SELECT * FROM table WHERE foo = ?'); 
$db->execute(Array("bar's baz")); 
+0

感謝隊友最欣賞;-) – Rob 2012-03-02 02:42:50

0

一個有些有趣的事情 - 你不應該使用函數mysql_escape_string避免SQL注入攻擊,即使你沒有在MySQL 5.3使用準備好的語句。 請注意,它不是「mysql_prevent_sql_injection()」函數,它是mysql轉義字符串之一。所以,它被用來轉義字符串。儘管注射可能性,你必須逃避弦。然而,除了帶引號的字符串外,它不會對任何查詢部分有所幫助。

+0

我會問一個相當困難的問題。爲什麼? – Mave 2013-10-11 22:02:55

+0

我的回答有什麼不清楚? – 2013-10-11 22:04:21

+0

如果它不再是您的應用程序的威脅,爲什麼你會逃脫一個字符串?畢竟,這可能是一個愚蠢的問題。 – Mave 2013-11-29 11:54:19