【发布时间】:2011-12-19 11:48:34
【问题描述】:
我听人说(与 C#/SQL Server 相关,但也与 PHP/MySql 相关):不要手动转义字符串 - 改用存储过程。
好的,我可以接受这个建议,但为什么呢?很多人说(包括 SO)mysql_real_escape_string() 就够了,mysql_real_escape_string() 很好,mysql_real_escape_string() 是第一种保护方式。
为什么?是否存在mysql_real_escape_string() 可能失败的情况?至少一个...我不需要很多:)
【问题讨论】:
-
最大的弱点是你会忘记使用它!
-
您会发现 MySQL 中存储过程的使用比 SQL Server 中的少,但 PHP/MySQL API 通常鼓励使用预准备语句。
-
我在使用 mysql_real_escape_string() 时从来没有遇到过任何问题。我认为人们说使用存储过程是因为有机会忘记使用 mysql_real_escape_String()。
-
@Tomalak Geret'kal:怎么了?
-
@Khronos:“我从来没有遇到过问题”并不重要。对于大多数人(基本用法,没有针对您的应用程序的攻击),如果“他们遇到了问题”,那么整个世界也会遇到同样的问题。这意味着早在您了解
mysql_real_escape_string是什么之前,问题就已经解决了。
标签: php mysql security sql-injection