1

这与HTMLPurifier - 添加到忽略列表有关。我在白名单中添加了几个标签。我现在有这个代码 -

$config->set('HTML', 'AllowedElements', array("customreport", "column", "columnseq"));

$def = $config->getHTMLDefinition(true);
$def->addElement("customreport", 'Block', 'Flow', 'Common', array());
$def->addElement("column", 'Block', 'Inline', 'Common', array());
$def->addElement("columnseq", 'Inline', 'Empty', 'Common', array('path'=>'CDATA', 'label'=>'CDATA'));

问题是,如果我发送一个带有单引号属性值的 html 标记,htmlpurifier 会将其更改为双引号。例如

<columnseq path='test' label='tlabel' />

它甚至发生在演示站点(http://htmlpurifier.org/demo.php)上,带有测试字符串

<A HREF='http://www.google.com/'>XSS</A>

这种行为可以被覆盖吗?

4

1 回答 1

3

将属性引用规范化为双引号是一个有意的设计决策,因为当我们构建 HTML 的内存表示时,我们只有一个属性名称与值的关联数组,没有关于原始内容的信息报价风格是。如果您使用 DOM 样式解析器,也无法获取该信息。

于 2010-07-26T16:55:12.547 回答