Skip to content
Vol. 1 · Ed. 2026
CyberGlossary
Entry № 1307

Trusted Types

审核人Cybersecurity entrepreneur & security researcher

Trusted Types 是什么?

Trusted Types浏览器 API 与 CSP 指令,要求危险的 DOM 接收器只能接受经策略审查的类型化值而非原始字符串,从而从根源上防止基于 DOM 的 XSS。


Trusted Types 是由 Google 设计、并作为 W3C 工作草案标准化的一项防御机制,旨在从根源上消除基于 DOM 的 XSS。通过 require-trusted-types-for 'script'trusted-types 这两条 CSP 指令启用后,只要注入接收器——innerHTMLouterHTMLdocument.writeeval、传入字符串的 setTimeoutscript.srciframe.srcdoc 以及其余数十种——接收到普通字符串,浏览器就会拒绝执行。代码必须改为传入由命名的、经审计的策略通过 trustedTypes.createPolicy(...) 生成的类型化对象(TrustedHTMLTrustedScriptTrustedScriptURL)。这样一来,整个代码库中成千上万个不安全接收器就收敛为少数几个可供审查的策略函数。

该机制已在 Chromium 系浏览器中落地(Chrome 与 Edge 自 v83 起,即 2020 年 5 月);Firefox 与 Safari 的实现仍在推进中,因此它是作为纵深防御与严格 CSP 配合部署,而非唯一的控制手段。有一个名为 default 的特殊策略会拦截任何漏网的字符串,让团队将其送入净化器处理——DOMPurify 原生返回 TrustedHTML,因此 DOMPurify.sanitize(html, {RETURN_TRUSTED_TYPE: true}) 即可满足强制要求。Google 表示,Trusted Types 使其 Search、Photos 等产品中的 DOM XSS 降至接近于零,因为其历史上大多数 XSS 缺陷都出在客户端。建议先以 Content-Security-Policy-Report-Only 模式上线,在正式强制之前先捕获违规情况。

flowchart TD
  A[不可信字符串<br/>location.hash、postMessage] --> B{是否赋值给<br/>DOM 接收器?例如 innerHTML}
  B -->|已强制 Trusted Types| C{值是否为<br/>TrustedHTML 对象?}
  C -->|是,来自经审计的策略| D[接收器安全执行]
  C -->|否,原始字符串| E[浏览器抛出<br/>TypeError + CSP 报告]
  E --> F[default 策略<br/>DOMPurify 净化]
  F --> C
  B -->|无 Trusted Types| G[接收器执行原始字符串<br/>基于 DOM 的 XSS]

示例

  1. 01

    Content-Security-Policy: require-trusted-types-for 'script'; trusted-types default;

  2. 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 的防御通常结合技术控制与运营实践,详见上方完整定义。

相关术语

另见