CSP生成
エンタープライズ・サイバーセキュリティ•RFC 3986 & W3C CSP3準拠

CSPヘッダー生成ツール

堅牢なContent Security Policy(CSP)ヘッダーを即座に自動生成。script-src、style-src、nonce、ハッシュ値を設定し、XSS攻撃の防止とCSPエラーの解消を支援します。

100
OWASP 総合強度堅牢(Grade A+)
推奨セキュリティプロファイル:
1
ディレクティブAST構文解析
16種W3Cディレクティブとトークン分解
2
Web Crypto 暗号学的nonce生成
128bit CSPRNGおよびSHA-256ハッシュ
3
OWASP静的バイパス脆弱性監査
7項目の高リスク回避手法を自動検出
4
マルチプラットフォーム設定出力
Nginx / Apache / Caddy / Next.js対応
パラメータ設定・入力
アーキテクチャ設計方針
適用モード(レスポンスヘッダー)
高度セキュリティ拡張オプションW3C レベル区分 Level 3
CSPバージョン互換性
Web Crypto CSPRNG nonce & SHA-256 ハッシャー
window.crypto.subtle
nonceプレフィックスdG9vbHNhYS1zZWN1cmUtbm9uY2UtMjAyNg==
インラインスクリプト用 SHA-256 ハッシュ生成:'sha256-RFWzHiTAeaP0v89upId2U1QGEGNhBlCe/JC9Zdqvqo='
検証済み外部サービス許可リスト一括追加:
default-srcFetch(リソース取得)継承フォールバックなし
Universal fallback boundary for all fetch directives when omitted.
'self'
script-srcFetch(リソース取得)default-src を継承
Governs valid sources for JavaScript execution and inline scripts.
'self''strict-dynamic''nonce-dG9vbHNhYS1zZWN1cmUtbm9uY2UtMjAyNg=='https:'unsafe-inline'
style-srcFetch(リソース取得)default-src を継承
Governs valid sources for stylesheets, inline styles, and CSS fonts.
'self''unsafe-inline'
img-srcFetch(リソース取得)default-src を継承
Governs valid sources of images, SVG vectors, and favicons.
'self'data:https:
connect-srcFetch(リソース取得)default-src を継承
Restricts script interfaces: fetch(), XMLHttpRequest, WebSocket, and sendBeacon.
'self'
font-srcFetch(リソース取得)default-src を継承
Governs sources for web fonts loaded via @font-face rules.
'self'data:
object-srcFetch(リソース取得)default-src を継承
Restricts plugins (<object>, <embed>, <applet>). OWASP mandates 'none'.
'none'
media-srcFetch(リソース取得)default-src を継承
Governs valid sources for <audio> and <video> HTML5 media streams.
(未設定時は default-src をフォールバック継承)
frame-srcFetch(リソース取得)default-src を継承
Governs valid sources for nested browsing contexts (child <iframe> elements).
(未設定時は default-src をフォールバック継承)
worker-srcFetch(リソース取得)default-src を継承
Restricts Worker, SharedWorker, and ServiceWorker execution origins.
(未設定時は default-src をフォールバック継承)
manifest-srcFetch(リソース取得)default-src を継承
Governs valid sources of progressive web application (PWA) manifests.
(未設定時は default-src をフォールバック継承)
base-uriDocument(ドキュメント境界)継承フォールバックなし
Restricts URLs in <base> tags. CRITICAL: does NOT inherit from default-src!
'none'
form-actionNavigation(画面遷移・埋め込み)継承フォールバックなし
Restricts target submission endpoints for HTML <form> elements.
'self'
frame-ancestorsDocument(ドキュメント境界)継承フォールバックなし
Clickjacking Armor: restricts parents embedding this site. HTTP header only!
'none'
report-uriReporting継承フォールバックなし
Legacy URI collector endpoint for W3C CSP Level 2 violation reports.
(明示的な制限なし・非推奨)
report-toReporting継承フォールバックなし
Modern W3C Reporting API endpoint group identifier.
(明示的な制限なし・非推奨)
有効ディレクティブ数: 11定義済みオリジン数: 18
モダン厳格(Strict Nonce)
Content-Security-Policy: upgrade-insecure-requests; default-src 'self'; script-src 'self' 'strict-dynamic' 'nonce-dG9vbHNhYS1zZWN1cmUtbm9uY2UtMjAyNg==' https: 'unsafe-inline'; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:; connect-src 'self'; font-src 'self' data:; object-src 'none'; base-uri 'none'; form-action 'self'; frame-ancestors 'none'; require-trusted-types-for 'script'; trusted-types default dompurify

# Recommended Defense-in-Depth Headers:
Cross-Origin-Opener-Policy: same-origin
Cross-Origin-Embedder-Policy: require-corp
Cross-Origin-Resource-Policy: same-origin
X-Content-Type-Options: nosniff
X-Frame-Options: DENY
Referrer-Policy: strict-origin-when-cross-origin
Permissions-Policy: camera=(), microphone=(), geolocation=()
ヘッダー種別: Content-Security-Policy
100% ブラウザ内メモリ処理
セキュリティ評価スコア100スコア基準(0〜100点)
完全ローカル実行(送信ゼロ)11 件のディレクティブ18 件のソース
ブラウザ内メモリ実行強制適用中

完全クライアントサイド実行

すべてのポリシー生成と暗号演算はブラウザのメモリ内で高速実行されます。

サーバー送信ゼロの安心設計

入力データやポリシー構成は端末内に完結し、外部サーバーへの通信は一切行われません。

本番環境対応の即時エクスポート

Nginx、Apache、Caddy、Next.js向けに最適化された構文をワンクリックで出力可能です。

技術リファレンス・アーキテクチャガイド

Content Security Policy & CSP Generator ガイド — 技術リファレンス

安全で強固な Content Security Policy(CSP)ヘッダーを即座に生成。script-src、style-src、Nonce、ハッシュ値を設定し、XSS攻撃の防止とCSPエラーの解消を実現します。

Content Security Policy & CSP Generator ガイド — 技術リファレンス — クライアントサイド完全ローカル実行アーキテクチャ図
Content Security Policy & CSP Generator ガイド — 技術リファレンス — クライアントサイド完全ローカル実行アーキテクチャ図

主要パラメータと設定項目

default-src(フェッチ境界フォールバック)ソースリスト(W3C フェッチフォールバック)

明示的なディレクティブが指定されていないすべてのフェッチ系ディレクティブ(script-src、style-src、img-src、connect-src、font-src、object-src、media-src、frame-src、worker-src、manifest-src)の包括的フォールバックとして機能します。'self' を指定すると未設定カテゴリを同一オリジンのみに制限し、'none' を指定するとすべてのリソースタイプに対して完全な明示的宣言を強制します。

初期値: 'self'(同一オリジン限定フォールバック)
script-src & 'strict-dynamic'(XSS実行防御シールド)ソースリスト&キーワード式

JavaScriptの実行元オリジンを制御し、クロスサイトスクリプティング(XSS)を防止します。W3C CSP Level 3 では、暗号論的 Nonce またはハッシュ値と 'strict-dynamic' を組み合わせることで、認可されたルートスクリプトから動的に生成されたスクリプトをモダンブラウザが信頼し、レガシーなホスト許可リストや 'unsafe-inline' を自動的に無視します。

初期値: 'self' 'strict-dynamic' 'nonce-...'(モダン厳格ポリシー)
object-src & base-uri(プラグイン&ナビゲーション防護)ソースリスト(ドキュメント整合性)

object-src は Flash、Java、Silverlight などのプラグイン実行を制限し、'none' の指定は OWASP の必須ベースラインです。base-uri は HTML <base href> タグで許可する URL を制限します。極めて重要な点として、base-uri は default-src にフォールバックしないため、省略すると <base> タグ挿入により相対パスのスクリプト URL がハイジャックされる脆弱性が生じます。

初期値: object-src 'none'; base-uri 'none'
frame-ancestors(クリックジャッキング&UI不正装飾防御)フレーミングポリシー(HTTPレスポンスヘッダー専用)

<frame>、<iframe>、<embed>、<applet> タグによってページを埋め込み可能な親オリジンを指定し、レガシーな X-Frame-Options ヘッダーを置き換えます。'none' を指定するとすべてのサイトからのフレーム埋め込みを遮断(クリックジャッキングを防止)し、'self' を指定すると同一オリジンからのみ埋め込みを許可します。なお、frame-ancestors は HTML の <meta> タグ内では無視されます。

初期値: 'none' または 'self'(クリックジャッキング防御)
connect-src(データ外部送信&API境界制御)URLオリジンリスト(fetch / XHR / WebSocket)

fetch()、XMLHttpRequest、WebSocket(wss://)、EventSource、navigator.sendBeacon() などのスクリプトインターフェースで読み込み可能な接続先 URL を制限します。改ざんされたサードパーティ製スクリプトが不正な外部サーバーへセッショントークンを送信するなどのデータ流出(Data Exfiltration)攻撃を抑止するために不可欠です。

初期値: 'self'(同一オリジンAPI限定)
upgrade-insecure-requests & report-to(トランスポート&監査テレメトリ)ディレクティブフラグ&レポーティンググループ

upgrade-insecure-requests は、ブラウザに対してすべての HTTP URL をリクエスト前に自動的に HTTPS へ昇格して取得するよう指示し、混在コンテンツ(Mixed Content)の警告を防止します。report-to はブラウザが構造化 JSON 形式の違反レポートを送信する Reporting API エンドポイントグループを定義し、非推奨となった report-uri ディレクティブの後継として機能します。

初期値: upgrade-insecure-requests(有効)

現場のベストプラクティス・実践Tips

CSP3 対応ブラウザでは 'strict-dynamic' がホスト許可リストを完全に無効化

script-src 内に Nonce またはハッシュ値とともに 'strict-dynamic' が指定されている場合、W3C CSP Level 3 仕様に基づき、ブラウザは 'https:' や 'https://*.google.com' などのホスト指定許可リストや 'unsafe-inline' を自動的に無視します。ヘッダー内に残されたドメイン許可リストは、旧世代ブラウザ(CSP Level 2)向けの互換性フォールバックとしてのみ機能します。'strict-dynamic' を採用する場合、特定サードパーティ製スクリプトの実行をドメイン指定で許可することはできません。起点となるローダースクリプト自体に正しい Nonce を付与してください。

base-uri の未設定は HTML インジェクションによるスクリプトハイジャックを誘発

多くの開発者は default-src 'self' を設定すればドキュメント全体が保護されると考えがちですが、base-uri は default-src を継承しません。base-uri が省略されている場合、エスケープ漏れのコメント欄やマークダウン等による軽微な HTML インジェクションの脆弱性から、攻撃者に <base href='https://evil-attacker.com/'> を注入される危険があります。これにより、相対パスで記述されたスクリプト(例: <script src='/static/app.js'>)の参照先が外部攻撃サーバーに差し替えられ、script-src 'self' ポリシーを完全に迂回されます。必ず base-uri 'none' または 'self' を明示してください。

CSP2 以降では Nonce やハッシュが存在すると 'unsafe-inline' は安全に無視される

CSP Level 1 のみに対応したレガシーブラウザをサポートしつつ、モダンブラウザで最高水準のセキュリティを維持したい場合は、script-src 'nonce-XYZ123' 'unsafe-inline' と併記するのが定石です。W3C CSP Level 2 および Level 3 の仕様により、Nonce やハッシュ値が指定されている場合、対応ブラウザは 'unsafe-inline' を自動的に無視します。最新環境のセキュリティ強度を低下させることなく、旧環境との後方互換性を両立できます。

default-src ではクリックジャッキングやフォーム改ざんを防御できない

default-src 'none' を指定すればすべてのドキュメント挙動が封鎖されると誤解されがちですが、default-src が制御するのはリソース取得(fetch)ディレクティブのみです。悪意ある iframe への埋め込みを防ぐ frame-ancestors(クリックジャッキング対策)や、認証情報等の送信先を制限する form-action には一切影響を与えません。強固な保護を実現するには、必ず明示的に frame-ancestors 'none'(または 'self')および form-action 'self' を宣言してください。

よくある落とし穴とトラブルシューティング

⚠️ブラウザコンソールに「Refused to execute inline script because it violates the following Content Security Policy directive: 'script-src 'self''」と表示される

インラインの <script> タグや HTML イベントハンドラ属性(onclick、onload など)が未認可のまま実行されたことが原因です。モダンセキュリティ標準に則った解決手順は次のとおりです。(1) スクリプトタグに暗号論的 Nonce 属性を付与(<script nonce='...'>)し、ヘッダーの script-src に一致する 'nonce-...' を宣言する、(2) インラインコードの完全一致 SHA-256 ハッシュ値を算出し、script-src に 'sha256-...' を追加する、または (3) インライン属性を廃止し、addEventListener でバインドする外部 JavaScript ファイルへリファクタリングしてください。

⚠️APIリクエスト時に「Refused to connect to 'https://api.example.com' because it violates connect-src」というエラーで通信に失敗する

モダンブラウザは、fetch()、XMLHttpRequest、WebSocket(wss://)、navigator.sendBeacon() による通信先を connect-src に宣言されたオリジンに限定します。connect-src が明示されていない場合、ブラウザは default-src の設定にフォールバックします。フロントエンドが別ドメインのバックエンドや外部サービス(Stripe、Sentry、外部APIゲートウェイなど)と通信する場合は、CSP 設定に対象オリジン(例: connect-src 'self' https://api.example.com https://api.stripe.com)を明記してください。

⚠️script-src に指定した SHA-256 ハッシュ値が Google Chrome や Firefox で CSP 違反エラーになり認識されない

CSP のスクリプトハッシュ照合は厳密なバイナリ一致(ビット単位)で判定されます。末尾の改行コード(\r\n と \n の差異)や空白文字が1つ異なるだけでもハッシュ不一致となります。また、ハッシュ計算時には開始 <script> および終了 </script> タグを含めず、内側のスクリプト本文のみを対象に計算してください。さらに、サーバーサイドのテンプレートエンジンがハッシュ算出後にインラインスクリプトを自動整形・圧縮(Minify)していないか確認してください。

⚠️HTML の <meta> タグに記述した frame-ancestors ディレクティブがブラウザに無視される

W3C Content Security Policy 仕様により、frame-ancestors、report-uri、report-to などのディレクティブは、HTML の <meta http-equiv='Content-Security-Policy'> 要素内での指定が固く禁じられており、ブラウザから完全に無視されます。クリックジャッキング対策として frame-ancestors を機能させるには、Web サーバー側(Nginx の add_header、Apache の Header set、Next.js の middleware など)から本物の HTTP レスポンスヘッダーとして配信する必要があります。

よくある質問 (FAQ)

XSS攻撃を確実に防ぐ Content Security Policy(CSP)の策定方法は?▼

クロスサイトスクリプティング(XSS)を根本から遮断するには、暗号論的 Nonce またはハッシュ値と 'strict-dynamic'、そして object-src 'none' を組み合わせた「Strict CSP(厳格なCSP)」を導入します。堅牢な推奨基本ヘッダーは次のとおりです: Content-Security-Policy: default-src 'self'; script-src 'self' 'strict-dynamic' 'nonce-RANDOM_BASE64' 'unsafe-inline'; object-src 'none'; base-uri 'none'; frame-ancestors 'none';。これにより、不正なインラインスクリプトの実行を阻止し、プラグインの悪用を遮断し、<base> タグ書き換えによる URL ハイジャックを完全に防止できます。

CSP における default-src と script-src の違いは何ですか?▼

default-src は個別の指定がないすべてのリソースタイプ(script-src、style-src、img-src、connect-src、font-src など)に適用される包括的なフォールバックディレクティブです。一方、script-src は JavaScript ファイルやインラインスクリプトの読み込み・実行元を専用に制御します。script-src が明示されている場合はスクリプトの判定において default-src を上書きし、script-src が省略されている場合はブラウザが default-src の設定を適用します。

Content Security Policy で 'unsafe-inline' の使用が危険とされる理由は?▼

'unsafe-inline' は、ページ内に存在するあらゆるインライン JavaScript の実行をブラウザに許可するため、格納型(Stored)や反射型(Reflected)XSS 脆弱性によって攻撃者が注入した悪意あるスクリプトまで実行されてしまう危険性があるためです。'unsafe-inline' を単独で許可すると、CSP の中核であるスクリプト実行制限の防御機能が実質的に無力化されます。ただし、暗号論的 Nonce や 'strict-dynamic' と併記されている場合は、モダンブラウザ側で 'unsafe-inline' が自動的に無効化され安全に処理されます。

CSP の Nonce(ノンス)の仕組みと生成方法は?▼

CSP の Nonce(number used once:使い捨てのランダム値)は、Web サーバーが HTTP リクエストごとに動的に生成する暗号論的に安全なランダム文字列(通常 128 ビット以上の Base64 エンコード文字列)です。サーバーは HTTP レスポンスヘッダー(script-src 'nonce-abc123xyz')にこのトークンを出力し、正当なインラインスクリプトタグにも一致する属性(<script nonce='abc123xyz'>)を付与します。攻撃者はリクエストごとに変化する Nonce を事前予測できないため、注入された不正スクリプトの実行を確実に遮断できます。

Content-Security-Policy と Report-Only ヘッダーの違いは何ですか?▼

Content-Security-Policy はポリシーを強制適用し、違反するスクリプト、通信、スタイルシートなどを即座にブロックして違反を記録します。一方、Content-Security-Policy-Report-Only は違反リソースの読み込みや実行を遮断せず通常通り動作させながら、設定されたエンドポイント(report-to / report-uri)に詳細な違反レポート(JSON)のみを送信します。本番環境の既存機能を壊すことなく安全にポリシーの検証と監査を行うための業界標準プラクティスです。

HTML の meta タグで Content Security Policy を設定できますか?▼

はい、ドキュメントの <head> 内に HTML の <meta http-equiv='Content-Security-Policy' content='...'> 要素を配置することで CSP を配信できます。ただし、W3C 仕様により、フレーミング制御およびレポーティング関連のディレクティブは meta タグ内での使用が固く禁じられており、frame-ancestors、report-uri、report-to などはブラウザによって完全に無視されます。クリックジャッキング対策やログ監視テレメトリを確実に機能させるには、必ず Web サーバーから真の HTTP レスポンスヘッダーとして配信してください。

関連開発者ツール

全ツール一覧 →
Bcrypt ハッシュ生成&パスワード検証ツールセキュリティ

ソルトラウンド数 (4〜16) を自由に設定できるEksblowfish暗号ベースのBcryptハッシュ生成&ローカル検証ツール。完全ブラウザ完結。

ツールを開く→
HMAC 署名生成・整合性検証ツールセキュリティ

RFC 2104 準拠の鍵付きハッシュ(HMAC-SHA256、HMAC-SHA512、HMAC-SHA1、HMAC-MD5)をブラウザ内で瞬時に算出・定数時間(Timing-Safe)検証。

ツールを開く→
クライアントサイド AES-GCM / CBC 暗号化・復号ツールセキュリティ

Web Crypto APIによるブラウザ内ハードウェア高速化AES-256認証暗号。サーバー送信一切なし、完全ローカル実行。

ツールを開く→
RSA 公開鍵・秘密鍵ペア生成ツールセキュリティ

Web Crypto APIを利用して、ブラウザ内で安全に2048/4096ビットのRSA暗号化キーペア(PEM形式)を生成・ダウンロードできます。

ツールを開く→
Base58 / Base58Check 相互変換&エンコーダーセキュリティ

暗号通貨(ビットコイン、ソラナ)やIPFSで標準採用されるBase58およびBase58Checkのエンコード・デコードツール。誤読防止アルファベットとSHA-256チェックサム検証に対応。

ツールを開く→
Base32エンコーダー・デコーダー (RFC 4648 & Base32hex)ユーティリティ

文字列やバイナリデータをRFC 4648標準Base32およびBase32hex形式で相互変換。パディング(=)制御やHex表示に対応。

ツールを開く→