微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用DOMPurify清理HTML时允许属性的安全隐患

如何解决使用DOMPurify清理HTML时允许属性的安全隐患

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

const sanitizedHtml = DOmpurify.sanitize(htmlString);

问题是认情况下,DOmpurify不支持HTML标记属性。就我而言,我有一个具有target属性的锚元素,并且经过清理的HTML删除target属性

从文档中,我发现以下代码解决此问题:

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

但是,我的问题是,如果DOmpurify删除了所有属性,则背后必须有一些原因。因此,如果我允许如上所述的某些特定属性,我是否会开放任何安全风险(XSS攻击)?

解决方法

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

简单地允许属性 target 会导致您面临 here 所述的安全问题。

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。