Trusted Types
Trusted Types 是什么?
Trusted Types浏览器 API 与 CSP 指令,要求危险的 DOM 接收器只能接受经策略审查的类型化值,从而防止基于 DOM 的 XSS。
Trusted Types 由 Google 设计并在 W3C 标准化,旨在消除基于 DOM 的 XSS。通过 CSP 的 require-trusted-types-for 与 trusted-types 指令启用后,浏览器会拒绝向 innerHTML、document.write、eval、script.src 等接收器传入普通字符串。代码必须经命名且经审计的策略构造 TrustedHTML、TrustedScript、TrustedScriptURL 等类型对象。这样所有危险 DOM 写入都收敛到一个可审查的小接口,大幅减少历史遗留的 XSS 接收器。Google、Bing、Shopify 等大型网站已大规模部署。
● 示例
- 01
Content-Security-Policy: require-trusted-types-for 'script'; trusted-types default;
- 02
将 element.innerHTML = userInput 改写为 element.innerHTML = policy.createHTML(userInput)。
● 常见问题
Trusted Types 是什么?
浏览器 API 与 CSP 指令,要求危险的 DOM 接收器只能接受经策略审查的类型化值,从而防止基于 DOM 的 XSS。 它属于网络安全的 应用安全 分类。
Trusted Types 是什么意思?
浏览器 API 与 CSP 指令,要求危险的 DOM 接收器只能接受经策略审查的类型化值,从而防止基于 DOM 的 XSS。
Trusted Types 是如何工作的?
Trusted Types 由 Google 设计并在 W3C 标准化,旨在消除基于 DOM 的 XSS。通过 CSP 的 require-trusted-types-for 与 trusted-types 指令启用后,浏览器会拒绝向 innerHTML、document.write、eval、script.src 等接收器传入普通字符串。代码必须经命名且经审计的策略构造 TrustedHTML、TrustedScript、TrustedScriptURL 等类型对象。这样所有危险 DOM 写入都收敛到一个可审查的小接口,大幅减少历史遗留的 XSS 接收器。Google、Bing、Shopify 等大型网站已大规模部署。
如何防御 Trusted Types?
针对 Trusted Types 的防御通常结合技术控制与运营实践,详见上方完整定义。
● 相关术语
- attacks№ 240
跨站脚本(XSS)
一种 Web 漏洞,攻击者可在其他用户浏览的页面中注入恶意脚本,使其在受害者浏览器中以该站点的来源身份运行。
- appsec№ 214
内容安全策略 (CSP)
一种 HTTP 响应头,告诉浏览器允许加载哪些来源的脚本、样式、框架等内容,从而限制 XSS 与数据注入攻击的影响。
- appsec№ 773
输出编码
将不可信数据转换为特定输出上下文(HTML、JavaScript、URL、SQL、Shell)安全的形式,使其无法逃逸并被当作代码执行。
- appsec№ 982
安全编码
在编写源代码时遵循防御性模式、语言特定规则与公认指南,以最大程度减少安全缺陷的实践。
- appsec№ 538
输入校验
在应用处理数据前,服务端检查所有不可信输入是否符合预期的类型、长度、范围、格式和取值集合。
- appsec№ 496
HTTP 安全响应头
指示浏览器执行强制 HTTPS、限制嵌入、内容策略和引用来源等防御行为的响应头集合。
● 参见
- № 516iframe sandbox 属性