现在我正在使用htmlspecialchars(mysql_escape_string($value))
,但是有没有办法用一个语句而不是嵌套语句来清理它?
2 回答
好吧,没有一个函数可以同时处理它们。您可以使用准备好的语句和 html puffier 类,也许“外观和感觉”会好一点:)
mysql_real_escape_string
最近实际上已经失宠了。
现在首选使用PDO
or mysqli
。默认情况下,它们都带有 PHP。他们使用调用parameterized queries
的东西来访问数据库,而不是让您自己编写 SQL 命令。这意味着您不再需要担心转义,因为查询和变量是分别传递给函数的。
您可以在此处了解有关 PDO 的更多信息:http: //net.tutsplus.com/tutorials/php/why-you-should-be-using-phps-pdo-for-database-access/
在相关的说明中,通常将用户提供的输入“按编写时”存储到数据库中,而不是使用htmlspecialchars
. 然后,您应该使用htmlspecialchars
它在站点上出现的任何位置转义数据。这是OWASP推荐的约定。
这是因为您需要根据上下文转义不同的事物。这个字符串:
' <script src="http://example.org/malice.js"></script> ]}\\\\--
...如果将其用作参数JSON
(引号和反斜杠和]
需要}
转义)、HTML
(引号和<
s 需要转义)或写成URL
(几乎所有内容都需要转义),则需要区别对待被逃脱)。如果您需要花时间指导您的 JavaScript 对 HTML 进行反编码,那么您的代码很快就会变得混乱。
这种方法还使修复错误变得更简单:如果您的站点存在内容在单个页面上无法正确转义的错误,那么您可以更新页面并修复所有内容。如果您的站点存在数据错误地存储在数据库中的错误,那么您需要修复数据库中的所有内容(这将花费更长的时间并损害更多的用户)。