インフラ用語集へ戻る

セキュリティ・認証 / Webセキュリティ

CSPとは

Content-Security-Policy。ブラウザに「読み込んでよいスクリプトや画像の場所」を伝えるHTTPヘッダーです。

用語集内のカードを見る

詳細な図解

ブラウザが読み込み先を制限する流れ
Web応答ページとヘッダーを返す
CSPヘッダーscript-srcなどの方針を示す
ブラウザ判定各リソースの出所を照合
許可/遮断違反を遮断または報告
  • Report-Onlyで試す
  • nonce/hashを活用する
  • frame-ancestorsも確認

この記事で学べること

CSPを、定義だけで終わらせず、現場で出てくる場面、確認材料、見落としやすい点、関連語とのつながりまで順に確認できます。

  1. CSPを読むときの前提
  2. いきなり強制しない
  3. unsafe-inlineを減らす
  4. frame-ancestorsも確認する
  5. 変更証跡と引き継ぎ

実務メモ

Report-Onlyで影響を見てから強制する

どこで効くか

CSPはXSS被害軽減、外部スクリプト制御、タグ管理、iframe制御、管理画面や公開Webの防御で効きます。既存画面へ適用すると表示や計測が止まることがあります。

残す証跡

証跡には対象URL、CSPヘッダー全文、Report-Only有無、違反レポート、ブロックされたリソース、許可した外部ドメイン、確認ブラウザを残します。

避けたい誤解

unsafe-inlineや広い許可を残すと防御効果が弱くなります。一方で急に強制すると、正規のCDN、タグ管理、API呼び出し、frame埋め込みまで止まることがあります。

まず確認すること

  • Report-Onlyで違反を収集する
  • 許可ドメインの所有者を確認する
  • nonce/hashとframe-ancestorsを確認する

CSPを読むときの前提

CSP(Content-Security-Policy)は、ブラウザに読み込んでよいスクリプト、画像、CSS、frame、接続先を伝えるHTTPヘッダーです。XSSの被害軽減、外部スクリプト制御、クリックジャッキング対策で使います。

実務では、script-src、style-src、img-src、connect-src、object-src、frame-ancestors、nonce、hash、report-uriやreport-toを確認します。

証跡には、対象URL、CSPヘッダー全文、Report-Only有無、違反レポート、ブロックされたリソース、必要な外部ドメイン、確認ブラウザを残します。

いきなり強制しない

CSPは強力ですが、既存画面にそのまま適用すると、正規のJavaScript、CDN、タグ管理、画像、API呼び出しまで止めることがあります。最初はContent-Security-Policy-Report-Onlyで影響を集めます。

違反レポートは、攻撃だけでなく通常機能の依存先も含みます。業務上必要な読み込み先と不要な読み込み先を分けてから強制へ進みます。

  • Report-Onlyで違反を収集する。
  • 正規の外部リソースを棚卸しする。
  • 段階的に強制設定へ移行する。

unsafe-inlineを減らす

script-srcでunsafe-inlineを許すと、インラインスクリプトの実行を広く許すため、XSS軽減効果が弱くなります。可能ならnonceやhashで必要なスクリプトだけ許可します。

既存アプリでは、フレームワーク、テンプレート、タグ管理ツールがインラインコードに依存している場合があります。実装変更と運用設定の両方で解消します。

  • unsafe-inlineの必要理由を確認する。
  • nonceやhashの適用可否を見る。
  • タグ管理ツールの影響を確認する。

frame-ancestorsも確認する

CSPのframe-ancestorsは、そのページをどの親ページに埋め込ませるかを制御します。X-Frame-Optionsより柔軟に許可先を指定できます。

クリックジャッキング対策では、XFOとCSPの両方が設定されている場合の整合を確認します。業務ポータルや外部SaaSに正規埋め込みがあるなら、拒否しすぎない設計が必要です。

  • frame-ancestorsとXFOを突合する。
  • 正規の埋め込み元を確認する。
  • 不要なframe表示を拒否する。

変更証跡と引き継ぎ

CSP対応では、対象URL、ポリシー値、Report-Only期間、違反レポートの分類、許可した外部ドメイン、例外理由を残します。設定文字列だけでは、なぜ許可したかが分かりません。

引き継ぎでは、Webアプリ担当、セキュリティ担当、タグ管理担当、関連語としてXSS、SRI、XFO、CORSを残すと確認しやすくなります。

  • ポリシー変更前後のヘッダーを保存する。
  • 許可ドメインの所有者を記録する。
  • 違反レポートの確認手順を残す。

関連語

同じ主要カテゴリの用語

セキュリティ・認証の学習順

同じ主要カテゴリの用語をまとめて確認できます。現在の用語を起点に、前後の用語へ進むと文脈を保ったまま読み進められます。

InfraEngKit内の関連機能