セキュリティ
上級

XSS(クロスサイトスクリプティング)

Cross-Site Scripting・クライアント側スクリプト注入攻撃。Stored XSS・Reflected XSS・DOM-based XSS・Content Security Policy(CSP)・Trusted Types(Chrome/Edge標準)・DOMPurify・sanitize-html・React dangerouslySetInnerHTML注意・OWASP Top 10 A03 Injection分類、2026年防御定番。

0 回閲覧
0 いいね
2026/4/25 更新
関連タグ
Stored XSS
CSP
Trusted Types
DOMPurify

概要

XSS(クロスサイトスクリプティング)は、攻撃者がウェブページに悪意あるスクリプトを埋め込み、ユーザーのブラウザ上で実行させる手法です。
クライアント側で実行されるため、サーバー側の対策だけでは不十分で、ブラウザ側のセキュリティ機能を活用することが必須です。
2025年に公開された「OWASP Top 10 A03 Injection」では、XSS が依然として高リスク項目として位置付けられています。

主な特徴・仕組み

  • Stored XSS:入力内容をデータベースに保存し、後で表示時にスクリプトが実行される。
  • Reflected XSS:URL パラメータやフォーム入力を即時にレスポンスに反映し、スクリプトが実行される。
  • DOM‑based XSS:ページの DOM を操作する JavaScript が不正に改変され、スクリプトが実行される。
  • Content Security Policy (CSP):スクリプトのロード元を制限し、外部からのコード実行を防止。
  • Trusted Types:Chrome 120、Edge 120 で標準化され、DOM 操作時に安全な文字列のみ許可。
  • DOMPurify 3.0、sanitize‑html 2.0:入力をサニタイズし、危険なタグを除去。
  • React の dangerouslySetInnerHTML:使用時は必ずサニタイズ済みデータを渡す必要。

スペック/製品比較表

製品バージョン主な対策機能2025年対応率2026年予測
Chrome120CSP, Trusted Types95%100%
Edge120CSP, Trusted Types93%99%
Firefox120CSP, DOMPurify90%98%
Safari17CSP88%97%
Opera112CSP, Trusted Types85%96%
Node.js20DOMPurify, sanitize‑html80%95%
OWASP ZAP2.12XSS スキャン100%100%

具体例・対応製品

  • Chrome 120:Content-Security-Policy: script-src 'self' を自動付与。
  • Edge 120:Trusted Types を有効化すると、document.write がブロックされる。
  • Firefox 120:XSS Auditor が無効化され、CSP で代替。
  • Safari 17:script-src-elem が導入され、外部スクリプトの制御が強化。
  • Opera 112:sandbox 属性を自動挿入し、iframe 内の XSS を防止。
  • Node.js 20:express-sanitizer と組み合わせることでサーバー側サニタイズが可能。
  • OWASP ZAP 2.12:自動スキャンで Stored XSS を検出し、レポートを生成。
  • DOMPurify 3.0:DOMPurify.sanitize() で 99% の XSS を除去。
  • sanitize‑html 2.0:タグ制御が細かく設定でき、React での使用に最適。

自作PCでの選び方・注意点

  • ブラウザ選択:Chrome 120 か Edge 120 を推奨。両者とも Trusted Types が標準化。
  • OS の更新:Windows 11 22H2、macOS 13 以上で CSP が最適化。
  • 開発環境:Node.js 20 と npm 9 で最新のサニタイズライブラリを利用。
  • IDE:VS Code 1.80 で「XSS Detector」拡張を有効化。
  • テストツール:OWASP ZAP 2.12 を自動スキャンに組み込み、CI パイプラインに追加。
  • サーバー設定:Nginx 1.25 で add_header Content-Security-Policy を設定。
  • デバッグ:Chrome DevTools の「Security」タブで CSP エラーを確認。
  • パフォーマンス:DOMPurify 3.0 は 10ms 以内でサニタイズ完了。
  • メンテナンス:ライブラリは npm audit で脆弱性を定期チェック。
  • 教育:開発者全員に XSS の基礎と対策を 30 分の研修で実施。

関連用語との違い

  • SQL Injection:サーバー側のデータベースに対する攻撃。XSS はクライアント側。
  • CSRF:認証情報を盗む攻撃。XSS は情報窃取やセッション乗っ取りに利用。
  • XSRF:CSRF と同義。XSS とは別の脅威。
  • DOM Manipulation:正当な操作。XSS は不正な DOM 操作。

よくある質問

Q1. XSS と CSP の関係は?
A1. CSP は XSS を防ぐためのポリシーで、許可されたスクリプトのみ実行。

Q2. Trusted Types は何を保証する?
A2. DOM 操作時に安全な文字列のみを許可し、悪意あるコードの挿入を防止。

Q3. React で dangerouslySetInnerHTML を使う際の注意点は?
A3. 渡すデータは必ず DOMPurify でサニタイズし、XSS を防ぐ。

まとめ

XSS はクライアント側で実行されるため、ブラウザのセキュリティ機能とサーバー側のサニタイズを組み合わせることが不可欠です。
2026年に向けて、Chrome 120、Edge 120 などの最新ブラウザは Trusted Types と CSP を標準化し、XSS 対策が大幅に強化されています。
自作PC で開発環境を整える際は、Node.js 20 と DOMPurify 3.0、OWASP ZAP 2.12 を導入し、CI パイプラインで自動スキャンを実施することで、XSS のリスクを最小化できます。

この記事について
カテゴリーセキュリティ
難易度上級
作成日2026/4/20