【问题标题】:Security implication of allowing attributes while sanitising HTML using DOMPurify使用 DOMPurify 清理 HTML 时允许属性的安全含义
【发布时间】:2020-12-13 20:43:00
【问题描述】:

我正在使用DOMPurify 清理 HTML 以防止 XSS。

const sanitizedHtml = DOMPurify.sanitize(htmlString);

问题在于默认情况下,DOMPurify 不支持 HTML 标记的属性。就我而言,我有一个带有 target 属性的锚元素,并且经过净化的 HTML 删除了 target 属性。

从文档中我发现以下代码解决了这个问题:

const sanitizedHtml = DOMPurify.sanitize(htmlString, { ADD_ATTR: ['target'] });

但是,我的问题是,如果 DOMPurify 正在删除所有属性,那么这背后肯定有一些原因。那么如果我允许上面提到的某些特定属性,我是否会打开任何安全风险(XSS 攻击)?

【问题讨论】:

    标签: javascript xss dompurify


    【解决方案1】:

    虽然这可能有点晚了,但我目前正在自己​​对该主题进行一些研究。也许将来会对某人有所帮助。

    here 所述,仅允许属性target 可能会使您面临安全问题。

    确实存在允许target=_blank 的问题,但已关闭,因为作者不认为这是他们想要实现的功能。

    似乎建议使用钩子(可以在链接中找到示例)来实现此功能。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-24
      • 1970-01-01
      • 1970-01-01
      • 2015-10-19
      • 2014-07-13
      • 1970-01-01
      • 2016-10-02
      • 1970-01-01
      相关资源
      最近更新 更多