3

两个问题:

我一直在阅读文档和 SO 帖子..并且知道如何做到这一点(自己定义每个元素和属性),但我想要做的就是在默认白名单中添加 2 或 3 个属性.. 这样我不必不断地查找和添加更多元素/属性,例如HTML.AllowedElements和/或HTML.AllowedAttributes

具体来说,现在(对于内部受信任的用户)我需要允许 javascript 属性(来自 tinymce 的输入)。问题#1。)有没有办法只添加一个属性(HTMLpurifier 允许的)而不导致整个默认的允许元素/属性集被有效地清除(被明确写入HTML.AllowedElements或覆盖的内容覆盖HTML.AllowedAttributes)?

对于我现在需要的东西(javascript 属性),当我在这个线程中看到时我很兴奋:

HTML Purifier 配置中的白名单表单

... Edward Z. Yang 说:“... [ $config->set('HTML.Trusted', true);] 允许 JavaScript。”

...但即使在设置了 this: 之后$config->set('HTML.Trusted', true);,HTMLpurifier 4.4.0 仍在剥离例如任何输入onclick="dostuff();"属性。为什么?问题 #2.) 有没有一种快速的方法可以将 javascript 属性添加到允许列表中?

4

2 回答 2

1
  1. 您正在丢失 onclick,因为 HTML Purifier 不知道该属性,并且如果 HTML Purifier 在您打开 %HTML.Trusted 时通过了所有内容,那么您可能根本不使用 HTML Purifier。

  2. HTML Purifier 有针对这种情况的属性集合;'Common' 可能是插入它们的正确选择。

但为什么?%HTML.Trusted 的真实名称应该是 %HTML.UnsafeMakeMyApplicationVulnerable

于 2012-05-02T14:55:11.330 回答
1

HTMLPurifier 不支持任何 HTML 元素的 onClick 和类似的 java 脚本相关属性作为默认行为。因此,如果您希望以任何方式允许此类属性,您可以通过以下方式将此类属性添加到特定元素。

$config = HTMLPurifier_Config::createDefault();
$def = $config->maybeGetRawHTMLDefinition()
$def->addAttribute('a', 'onclick', 'Text');

但要小心,这可能会导致 xss 攻击,因为您允许任何 java 脚本代码存在于该属性中。

于 2017-05-10T09:22:59.810 回答