×
サイバー攻撃について
通常の文字列
    └─ innerHTMLへ代入
        └─ 拒否

アプリケーションが定義したポリシー
    ↓
サニタイズ
    ↓
TrustedHTML
    └─ innerHTMLへ代入
        └─ 許可

Trusted Typesはサニタイザーではありません。

危険なSinkへ渡す値を、アプリケーションが定義したポリシー経由に限定する仕組みです。W3C仕様でも、攻撃者が制御する入力を強力なWeb APIへ渡すことで生じる脆弱性を減らす目的が説明されています。


7. アップロードファイルを別オリジンで配信する

推奨構成です。

アプリケーション
https://example.com

アップロードファイル
https://usercontent-example.com

次の構成だけでは十分でない場合があります。

https://uploads.example.com

Cookieやドメイン設定によっては、サブドメイン間の影響が残るためです。

Django公式ドキュメントも、利用者アップロードを異なるトップレベルまたはセカンドレベルドメインから配信する方法を推奨しています。


8. Cookie設定で影響を抑える

次の設定はXSSそのものを防ぎません。

  • HttpOnly

  • Secure

  • SameSite

ただし、被害を抑える補助対策になります。