2012-03-02 64 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