现在我正在使用htmlspecialchars(mysql_escape_string($value))
,但是有没有办法用一个语句而不是嵌套语句来清理它?
答案 0 :(得分:2)
没有一个功能可以处理它们。 你可以使用预备语句和html puffier类,也许那么“外观和感觉”会更好一点:)
答案 1 :(得分:1)
mysql_real_escape_string
最近实际上已经失宠了。
现在首选使用PDO
或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
中的参数(引号和反斜杠以及]
和}
需要转义),则需要区别对待,{{ 1}}(引号和HTML
需要转义),或写成<
(几乎所有内容都需要转义)。如果您需要花时间指导JavaScript对HTML进行解码,那么您的代码将很快变得混乱。
此方法还可以简化修复错误:如果您的网站存在内容未在单个页面上正确转义的错误,那么您可以更新页面并修复所有内容。如果您的站点存在错误地将数据存储在数据库中的错误,那么您需要修复数据库中的所有内容(这将花费更长时间并损害更多用户)。