5

我想允许用户可以在我的论坛中使用的有限的 HTML 标签白名单。所以我已经像这样配置了 HTML Purifier:

$config = HTMLPurifier_Config::createDefault();
$config->set('HTML.Allowed', 'p,a[href|rel|target|title],img[src],span[style],strong,em,ul,ol,li');
$purifier = new HTMLPurifier($config);

我想知道的是,HTML Purifier 的默认配置是否仍然适用,除了接受的 HTML 标签数量减少,还是我需要手动重新设置每个可能的配置参数?

此外,我应该以任何方式调整默认配置以保持安全吗?我是整个 XSS 保护的新手,是 HTML Purifier 的新手,并没有发现手册提供了很多“基本”提示和提示。

4

2 回答 2

4

默认情况下,HTML Purifier 是安全的,您通过更改 %HTML.Allowed 对其施加的任何限制只能保证减少允许的标记集。查看http://htmlpurifier.org/live/smoketests/printDefinition.php以了解调整配置如何更改允许的标签集。

于 2012-11-07T05:58:33.503 回答
0

为什么不直接使用 DOM 解析器并检查标签类型是否在允许的 HTML 标签白名单中?

将输入转换为 DOM 节点列表,您应该能够遍历所有 DOM 节点并检查是否允许该类型。php.net 有很好的例子来说明如何做到这一点,这些例子是由其他人写的,比如你试图解决输入清理问题。

更多信息在这里: http: //php.net/manual/en/class.domdocument.php

于 2012-11-07T00:05:10.280 回答