This document requires ‘TrustedHTML’ assignment.
翻译:此文档需要“可信脚本URL”分配(就是说这样写不安全)
Trusted Types 的工作原理是锁定有风险的接收器函数。[会抛出错误,但不影响任务执行]
基于 DOM 的跨站点脚本 (DOM XSS) 是最常见的 Web 安全漏洞之一,并且您的应用程序很容易将其引入。Trusted Types 默认对危险的 Web API 函数加以保护,从而提供了编写、安全审核和维护无 DOM XSS 漏洞的应用程序的工具。Chrome 83 支持 Trusted Types,其他浏览器可以使用 polyfill。有关最新的跨浏览器支持信息,请参阅浏览器兼容性。
解决方法如下:
安装 DOMPurify 库。
npm install --save DOMPurify
创建一个文件 。
#+ trusted-security-policies.js
在捆绑程序的入口点(例如 webpack)中,首先导入此文件(在任何可能违反内容安全策略的代码之前)
import './path/to/trusted-security-policies';
import DOMPurify from 'dompurify';
if (window.trustedTypes && window.trustedTypes.createPolicy) { // Feature testing
window.trustedTypes.createPolicy('default', {
createHTML: (string) => DOMPurify.sanitize(string, {RETURN_TRUSTED_TYPE: true}),
createScriptURL: string => string, // warning: this is unsafe!
createScript: string => string, // warning: this is unsafe!
});
}
这是做什么的:每当将字符串分配为解析为 HTML、URL 或脚本时,浏览器都会通过定义的处理程序函数自动传递此字符串。
对于 HTML,HTML 正在由 DOMPurify 库从潜在的 XSS 代码中清除。
修复违规 #
有几个选项用于修复 Trusted Type 违规。您可以删除违规代码,使用库,创建 Trusted Type 策略,或者创建默认策略作为最后手段。