一次清理HTML和SQL?

时间:2013-01-03 13:22:41

标签: php sql html5

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

2 个答案:

答案 0 :(得分:2)

没有一个功能可以处理它们。 你可以使用预备语句和html puffier类,也许那么“外观和感觉”会更好一点:)

答案 1 :(得分:1)

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

现在首选使用PDOmysqli。它们都默认带有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进行解码,那么您的代码将很快变得混乱。

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