我使用mysql_real_escape_string
来提高安全性。为了更好的mysql性能,我现在考虑更换它。
我在mysql_escape_string VS mysql_real_escape_string中找到了有关mysql_real_escape_string
和mysql_escape_string
的详细说明。
我的问题是:
如果我使用持久连接并知道字符集(只有UTF-8),有没有办法用不使用mysql的东西替换mysql_real_escape_string
?
答案 0 :(得分:4)
首先,停止使用mysql_query
及相关功能。它在PHP 5.5中已被弃用,并且在使用时会产生警告,因为你根本不应该使用它。
其次,始终使用mysql_real_escape_string
并仅使用它来逃避您的价值观。甚至不要考虑尝试其他方法。它很难看,很烦人,只是为什么你不应该使用mysql_query
开始的众多原因之一。不要自己动手。不要寻找更快的替代品,因为没有任何可以安全使用的。
尽早切换到PDO。如果您的应用程序处于严重失修状态,转换成本可能会很高,但如果正确应用,那么SQL注入错误几乎为零。
如果你遇到逃避功能的性能问题,我不知道你在做什么,但你可能做错了。这些通常接近零成本,除非你每页负载数以百万计。您呈现的查询的执行时间几乎总是比准备语句本身所花费的时间长得多。
答案 1 :(得分:1)
http://dev.mysql.com/doc/refman/5.5/en/apis-php-class.mysqli.html
使用MySQLi库中的参数化查询;逃逸例行程序之前存在错误,有些可能会再次出现。参数化查询要困难得多,因此不太可能被MySQL错误攻击。