Content Security Policy
Content Security Policy (CSP) とは、HTTP ヘッダーを通じて、ページがリソースを読み込み元としてよいソースのホワイトリストを宣言する仕組みであり、XSS とコンテンツインジェクション対策の中核である。
目的
ホワイトリストによってリソースの読み込み元を制限し、注入された悪意あるスクリプトの実行を元から断つ。
メカニズム
Content-Security-Policy ヘッダーは、default-src(既定)、script-src(スクリプト)、style-src(スタイル)、img-src(画像)、connect-src(fetch/XHR)などのディレクティブを含む。値には 'self'、ドメイン、nonce、ハッシュを指定できる。report-uri は違反の報告先を定め、厳格な CSP では nonce と strict-dynamic を組み合わせる。
ユースケース
- XSS 攻撃への防御
- サードパーティスクリプトの制限
- インラインスクリプトの制御
- 違反レポートの監視
例
- 入力
script-src 'self' 'nonce-abc123'OutputOnly same-origin + nonce scripts can executeWhitelist
よくあるエラー
- CSP includes unsafe-inline, weakening protection
- Replace unsafe-inline with a nonce or hash