0

现在我正在使用htmlspecialchars(mysql_escape_string($value)),但是有没有办法用一个语句而不是嵌套语句来清理它?

4

2 回答 2

2

好吧,没有一个函数可以同时处理它们。您可以使用准备好的语句和 html puffier 类,也许“外观和感觉”会好一点:)

于 2013-01-03T13:29:49.173 回答
1

mysql_real_escape_string最近实际上已经失宠了。

现在首选使用PDOor 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 进行反编码,那么您的代码很快就会变得混乱。

这种方法还使修复错误变得更简单:如果您的站点存在内容在单个页面上无法正确转义的错误,那么您可以更新页面并修复所有内容。如果您的站点存在数据错误地存储在数据库中的错误,那么您需要修复数据库中的所有内容(这将花费更长的时间并损害更多的用户)。

于 2013-01-03T13:43:19.393 回答