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

Trusted Types

監修Cybersecurity entrepreneur & security researcher

Trusted Types とは何ですか?

Trusted TypesDOM ベースの XSS を根本から防ぐためのブラウザ API と CSP ディレクティブ。危険な DOM シンクには生文字列ではなく、ポリシーで検証された型付き値しか受け付けないようにする。


Trusted Types は、DOM ベース XSS を根絶するために Google が設計し、W3C の Working Draft として標準化された防御機構です。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 は、Search や Photos といった製品において DOM XSS をほぼゼロにまで削減できたのは Trusted Types のおかげだとしています。同社で過去に発生した XSS の大半はクライアントサイドのものだったからです。まずは Content-Security-Policy-Report-Only モードで展開し、強制する前に違反を洗い出しましょう。

flowchart TD
  A[信頼できない文字列<br/>location.hash, postMessage] --> B{DOM シンクに代入?<br/>例: 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 とは何ですか?

DOM ベースの XSS を根本から防ぐためのブラウザ API と CSP ディレクティブ。危険な DOM シンクには生文字列ではなく、ポリシーで検証された型付き値しか受け付けないようにする。 サイバーセキュリティの アプリケーションセキュリティ カテゴリに属します。

Trusted Types とはどういう意味ですか?

DOM ベースの XSS を根本から防ぐためのブラウザ API と CSP ディレクティブ。危険な DOM シンクには生文字列ではなく、ポリシーで検証された型付き値しか受け付けないようにする。

Trusted Types からどのように防御しますか?

Trusted Types に対する防御は通常、上記の定義で述べたとおり、技術的統制と運用上の実践を組み合わせます。

関連用語

関連項目