两个问题:
我一直在阅读文档和SO帖子......并且知道如何做很长的事情(自己定义每个元素和属性),但我想要做的就是在默认白名单中添加2或3个属性。因此,我不必经常查找并添加更多元素/属性,例如HTML.AllowedElements
和/或HTML.AllowedAttributes
。
具体来说,现在,(对于内部可信用户)我需要允许javascript属性(从tinymce输入)。问题#1。有没有办法只添加一个属性(到什么是HTMLpurifier允许),而不会导致整个默认的允许元素/属性集被有效地消灭(由仅覆盖明确的是什么写在HTML.AllowedElements
或HTML.AllowedAttributes
)?
对于我现在需要的 (javascript属性),当我在这个帖子中看到时,我很兴奋:
Whitelist Forms in HTML Purifier Configuration
...... Edward Z. Yang说,“...... [$config->set('HTML.Trusted', true);
]允许使用JavaScript。”
...但即使设置了这个:$config->set('HTML.Trusted', true);
,HTMLpurifier 4.4.0仍在剥离,例如任何输入onclick="dostuff();"
属性。为什么?问题#2。)是否有一种快速方法可以将javascript属性添加到允许列表中?
答案 0 :(得分:1)
由于HTML Purifier不知道该属性,并且当您打开%HTML时,HTML Purifier通过了所有内容,因此您正在失去onclick.Trusted您可能根本就不使用HTML Purifier。< / p>
HTML Purifier只有这种情况的属性集合; “共同”可能是将它们插入的正确选择。
但是......为什么? %HTML.Trusted的真实名称应该是%HTML.UnsafeMakeMyApplicationVulnerable
答案 1 :(得分:0)
HTMLPurifier不支持onClick和类似的java脚本相关属性作为默认行为的任何HTML元素。因此,如果您希望以任何方式允许此类属性,您可以通过以下方式将此类属性添加到特定元素。
$config = HTMLPurifier_Config::createDefault();
$def = $config->maybeGetRawHTMLDefinition()
$def->addAttribute('a', 'onclick', 'Text');
但要小心,这可能会导致xss攻击,因为您允许任何java脚本代码存在于该属性中。