验证不受信任的HTML输入我是否必须处理每个输入?

时间:2013-09-01 02:20:28

标签: php security xss

对于跨站点脚本漏洞

1)验证和转义每个用户输入

是个好主意

2)使用strip_tags足够好了,htmlpurifier的好处是什么呢?

1 个答案:

答案 0 :(得分:0)

是的,这是一个好主意。我会尽量说你不是白痴。将数据存储在数据库中时,请使用prepared statements and bound parameters。如果你使用它(就像你应该的那样),你不必手动转义进入数据库的数据。

现在,为了显示数据,它取决于您想要允许的内容以及您要将其输出的位置。如果它将显示在HTML页面上,并且您不希望允许使用htmlspecialchars($content, ENT_QUOTES)呈现任何HTML。您几乎不必使用htmlentities,因为这将转换具有HTML实体的所有字符。这意味着它会使您的文档变得更大。如果你想允许一些HTML,你必须在显示之前对其进行过滤(使用HTML净化器)。

请注意,不同的存储机制和不同的输出媒体需要不同的转义/清理策略。