2012-07-05 13 views
1

我刚刚开始使用HTML Purifier http://htmlpurifier.org来过滤来自所见即所得编辑器的内容。内容将显示回同一组中的用户或其他用户。系统上还有其他组,并且数据完整性非常重要。HTML净化器过滤器入站或出站或两者?

我正在使用PHP,内容存储在MySQL数据库中。

HTML Purifier使用了大量的处理器能力,所以我只想在入站内容中使用它,并直接从数据库中显示出站内容,而不使用任何过滤器。听起来很简单,它被过滤了,所以它应该是安全的,但我不是100%肯定的,它是安全的吗?

入站允许列表 'p [style],strong,em,u,h1,h2,h3,h4,h5,h6,li,ol,ul,span [style],div [style],br ,ins,del'

编辑:我发现网站建议在http://htmlpurifier.org/docs/enduser-slow.html这样做,但我想在这里提出一些意见,因为它的重要性很高。

+0

看一看OWASP的[XSS预防备忘单](https://www.owasp.org/index.php/XSS_%28Cross_Site_Scripting%29_Prevention_Cheat_Sheet)。 – Adi 2012-07-05 13:12:43

回答

1

当您将输入发送到数据库时对输入进行清理,或者由于这是一个CPU密集型步骤,您将在每秒几次浏览量时遇到很大的麻烦。但是,您必须确保数据库中的每一行都被清理过,否则您将在某一天将自己暴露给XSS(检查每个编辑或添加条目的请求,并考虑数据库中现有的行)。

小提示:如果您能负担得起的空间,存储消毒和未消毒的输入。如果有一天,你必须改变你的参数或HTMLPurifier有一个主要的0天,你可以更新整个表。但是,非常谨慎的影响,如果你做的这一个日子;)

编辑:确保你允许的风格做什么,或者只允许饥荒早期预警系统的CSS样式...

+0

谢谢Ugo,我只在wysiwyg输入的内容中使用净化器。其他一切将使用标准的PHP过滤器严格剥离和验证纯文本。你会建议在style属性中允许什么? – PaulMrG 2012-07-05 12:59:20

+0

没有什么比颜色,字体大小,字体重量,背景颜色,文本对齐等。避免位置,顶部,左侧,边缘等... – 2012-07-05 13:01:47