CSP
Content Security Policy の略で、Web ページで実行可能なリソースの出所を制限するセキュリティ機構
CSP とは
CSP (Content Security Policy) は、Web ページで実行可能なリソース (スクリプト、スタイル、画像) の出所を制限するセキュリティ機構である。XSS 攻撃の被害を大幅に軽減する。詳細は「CSP Nonce」を参照。
CSP の仕組み
サーバーが HTTP レスポンスヘッダーで許可するリソースの出所を宣言し、ブラウザがそのポリシーに違反するリソースの読み込みや実行をブロックする。インラインスクリプトや外部の不正なスクリプトが注入されても、CSP で許可されていなければ実行されない。
サーバーがレスポンスヘッダーで CSP を送信:
Content-Security-Policy: script-src 'self' https://cdn.example.com
ブラウザが CSP に違反するリソースをブロック:
✅ <script src="/app.js"> → 同一オリジン → 許可
✅ <script src="https://cdn.example.com/lib.js"> → 許可リスト → 許可
❌ <script src="https://evil.com/malware.js"> → ブロック
❌ <script>alert(1)</script> → インラインスクリプト → ブロック
主要なディレクティブ
主要なディレクティブを以下にまとめる。
| ディレクティブ | 制御対象 |
|---|---|
default-src | 全リソースのデフォルト |
script-src | JavaScript |
style-src | CSS |
img-src | 画像 |
connect-src | fetch, XHR, WebSocket |
font-src | フォント |
frame-src | iframe |
CSP の段階的導入
CSP の段階的導入を図で示す。
1. Report-Only モードで監視
Content-Security-Policy-Report-Only: default-src 'self'; report-uri /csp-report
2. 違反レポートを分析
→ どのリソースがブロックされるか確認
3. ポリシーを調整
→ 必要なオリジンを許可リストに追加
4. 本番適用
Content-Security-Policy: default-src 'self'; ...
インラインスクリプトの許可
インラインスクリプトの許可を以下にまとめる。
| 方法 | セキュリティ |
|---|---|
'unsafe-inline' | どのインラインスクリプトも通るため XSS を防げない |
'nonce-xxx' | リクエストごとに発行したランダムな値と一致するものだけ通す |
'sha256-xxx' | スクリプト本文のハッシュが一致するものだけ通す |
よくある CSP の設定
よくある CSP の設定を図で示す。
# 静的サイト (S3 + CloudFront)
default-src 'self';
script-src 'self';
style-src 'self' 'unsafe-inline';
img-src 'self' data: https:;
font-src 'self';
# SPA + API
default-src 'self';
script-src 'self';
connect-src 'self' https://api.example.com;
全体像を把握するには関連書籍も有用。
この記事は役に立ちましたか?
関連用語
XSS
Web サイトに悪意のあるスクリプトを注入し、ユーザーの情報を盗む攻撃
セキュリティヘッダー
HTTP レスポンスヘッダーでブラウザのセキュリティ機能を制御し、XSS やクリックジャッキングを防ぐ仕組み
CORS
ブラウザの同一オリジンポリシーを緩和し、異なるオリジン間のリソース共有を許可する仕組み
ShellScript
シェルのコマンドをまとめて自動実行するスクリプト。作業の自動化に使われる
Service Worker
ブラウザとネットワークの間でプロキシとして動作し、オフライン対応やキャッシュ制御を実現する Web API
Bash
Linux で標準的に使われるシェル。macOS にも同梱され、コマンド操作と自動化の中心になる
関連する記事
セキュリティ本ガイド - Web 開発者が読むべき技術書の選び方
Web セキュリティの基礎から実践まで学べる技術書の選び方マトリクスと、読了後にやるべき 3 つのアクションを紹介します。
AWS 本の選び方 - 全体像 / 構築 / 設計 / 運用 / セキュリティの 5 視点
AWS を学ぶ技術書の選び方を「全体像 / 構築 / 設計 / 運用 / セキュリティ」の 5 視点で整理。公式ドキュメントと本の役割分担、資格対策書の位置づけまで、2026 年 8 月時点の定番書で AWS 独学のルートを解説します。
バグを生むのは知識不足ではなく想像力不足である
バグの多くは、コードを書いた時点で「こういうケースもありうる」と想像できなかったことが原因です。想像力を鍛える読書法と、エッジケースへの感度を高める方法を解説します。