-1

mysql_real_escape_string用于更好的安全性。为了更好的 mysql 性能,我现在正在考虑更换它。

我在mysql_escape_string VS mysql_real_escape_stringmysql_real_escape_string中找到了关于和的详细解释。mysql_escape_string

我的问题是:

如果我使用持久连接并且知道字符集(仅 UTF-8),有没有办法mysql_real_escape_string用不使用 mysql 的东西替换?

4

2 回答 2

4

首先,停止使用mysql_query和相关功能。它在 PHP 5.5 中已被弃用,并且在使用时会产生警告,因为您根本不应该使用它。

其次,始终使用mysql_real_escape_string并且仅使用它来逃避您的价值观。甚至不要考虑尝试其他方法。它丑陋、烦人,而且只是您不应该开始使用的众多原因之一mysql_query。不要自己滚。不要寻找更快的替代品,因为没有任何可以安全使用的替代品。

尽早切换到PDO。如果您的应用程序处于严重的年久失修状态,转换成本可能会很高,但如果以严格的方式正确应用,则出现 SQL 注入错误的机会几乎为零。

如果您在转义函数方面遇到性能问题,我不知道您在做什么,但您可能做错了。这些通常接近于零成本,除非您实际上每页加载数百万个。您呈现的查询的执行时间几乎总是比准备语句本身所需的时间长得多。

于 2013-01-03T18:17:30.763 回答
1

http://dev.mysql.com/doc/refman/5.5/en/apis-php-class.mysqli.html

使用 MySQLi 库中的参数化查询;转义例程中以前存在错误,并且有可能再次出现。对查询进行参数化要麻烦得多,因此您不太可能受到 MySQL 错误的影响。

于 2013-01-03T18:21:13.607 回答