这个项目能做什么
DOMPurify 是一个基于 DOM 的 XSS 净化器,适用于 HTML、MathML 和 SVG。它接受字符串或 Element、DocumentFragment、Document 形式的脏标记,移除可能执行脚本或以其他方式脱离预期标记上下文的元素和属性,并默认返回净化后的 HTML。基本的浏览器 API 是 DOMPurify.sanitize(dirty);该包也可以在基于打包工具的项目中导入。
默认配置允许 HTML、SVG 和 MathML,包括 CSS 和自定义 data 属性。应用程序可以将输出限制为单一配置文件(例如仅 HTML),定义允许的标签和属性,禁止特定标签或属性,添加标签和属性,控制 ARIA 和 data 属性,管理自定义元素和自定义内置元素,并调整对 data URI 和 URL 协议的处理。钩子允许在净化过程中进行额外的程序化检查或修改。DOMPurify.removed 属性会报告被移除的节点以供调试,但项目明确表示不应将其用于安全决策。
DOMPurify 支持现代 Safari、Opera、Edge、Firefox 和 Chrome,以及其他使用当前 Blink、Gecko 或 WebKit 引擎的浏览器。在不支持的旧版浏览器(如 Internet Explorer)上,它会原样返回输入,并暴露 isSupported,以便调用方可以提供回退方案。2.x 分支(截至 v2.5.9)是文档中说明的兼容 IE 的安全更新版本线。
当提供 DOM 时,可以在 Node.js 中进行服务端使用。文档中的设置使用 jsdom,README 强烈建议保持 jsdom 为最新版本,因为较旧的 DOM 实现可能包含与解析器相关的漏洞,从而削弱净化效果。它特别警告目前不要将 DOMPurify 与 happy-dom 结合使用。isomorphic-dompurify 包被提及为跨环境设置的高级封装。
其他功能包括对 DOM 模板的递归净化、Shadow DOM 支持以及可选的 Trusted Types 集成。在支持的浏览器中启用 RETURN_TRUSTED_TYPE 后,sanitize 可以返回 TrustedHTML 值。调用方还可以提供或禁用内部 Trusted Types 策略,并且该库会检测递归策略配置。
该项目强调安全使用边界:在不同的上下文中修改或重新解析净化后的标记,或将其传递给另一个会更改 DOM 的库,都可能使净化器的保证失效。README 链接到安全目标和威胁模型、攻击类别和绕过历史、默认标签和属性列表、在线演示以及私密安全联系方式。其自动化测试在 Linux、macOS 和 Windows 上的当前 Chromium、Firefox 和 WebKit 引擎、较旧的引擎快照以及多个带 jsdom 的 Node.js 版本上运行。DOMPurify 采用 MPL-2.0 或 Apache-2.0 双许可。
评论
0 评分人数达到10人后显示
登录后参与讨论。