Content-Security-Policy ヘッダージェネレーター
Content-Security-Policy ヘッダーをディレクティブごとに構築し、ソースチップとコピーできる meta・nginx・Apache のスニペットを得られます。すべてブラウザ内で動作します。
CSP ジェネレーターは完全にブラウザ内で動作します。Content-Security-Policy を構築するために入力したディレクティブ・ホスト・スキームは端末から外に出ることはなく、ArrayKit にアップロードされることもありません。
Cache-Control ヘッダージェネレーターを開く
CSP ジェネレーター について
CSP ジェネレーターは、Content-Security-Policy ヘッダーを一度に 1 つのディレクティブずつ構築します。default-src、script-src、style-src、img-src、connect-src、font-src、frame-src などを、'self'、'none'、'unsafe-inline'、data:、https: のようなソースチップをクリックして、あるいは cdn.example.com のようなカスタムホストを入力して埋めます。キーワードソースはツールがシングルクォートで囲み、ホストやスキームは裸のまま残すので、ポリシーは常に有効です。空のディレクティブは自動で落とされ、すべてが正規の順序で出力されます。report-only トグルを反転すれば、強制する前にモニターモードでポリシーをテストでき、その後、生のヘッダー、HTML メタタグ、貼り付けるだけの nginx と Apache のスニペットをコピーできます。XSS やクリックジャッキングに対してサイトを堅牢化する開発者のために、ブラウザ内で動作 — 構築したポリシーが端末から外に出ることはありません。
機能
- default-src、script-src、style-src、img-src、connect-src、font-src、frame-src などのディレクティブごとのエディター
- ワンクリックのソースチップ:'self'、'none'、'unsafe-inline'、'unsafe-eval'、data:、https:、blob:、*
- カスタムホストとスキームを追加:キーワードはシングルクォートで囲まれ、ホストは裸のまま
- report-only トグルが Content-Security-Policy-Report-Only を出力し、ブロックせずにテスト
- ディレクティブは正規順に並び、空のディレクティブは自動で落とされる
- 生のヘッダー、HTML meta http-equiv タグ、nginx と Apache の add_header スニペットをコピー
- ディレクティブ内の重複ソースは、構築中に取り除かれる
- すべてブラウザ内で動作 — 構築したポリシーはアップロードされない
CSP ジェネレーター の使い方
- ソースチップをクリックするかホストを入力し、必要な各ディレクティブにソースを追加する
- 不要なディレクティブは空のままにする — 出力から落とされる
- 強制前に違反を監視したい場合は Report-Only を切り替える
- Content-Security-Policy ヘッダーの値、または meta・nginx・Apache のスニペットをコピーする
例
入力
default-src: 'self'
script-src: 'self' https:
img-src: 'self' data:
object-src: 'none'
出力
Content-Security-Policy: default-src 'self'; script-src 'self' https:; img-src 'self' data:; object-src 'none'
'self' のようなキーワードはクォートで囲まれ、https: や data: のようなスキームは裸のままです。
よくあるエラーとトラブルシューティング
- ポリシーを追加した後、ブラウザが 'Refused to load' エラーを報告する。 — そのリソース種別に対するソースが欠けています。ホストやスキームを対応するディレクティブ(またはフォールバックとして default-src)に追加して、ヘッダーを再構築してください。
- ポリシーが有効になるとインラインのスクリプトやスタイルが動かなくなる。 — CSP は、許可しない限りインラインコードをブロックします。script-src や style-src に 'unsafe-inline' を追加するか、より良くは nonce やハッシュのソーストークンに移行してください。
- レスポンスヘッダーは効くのに、meta タグ版が無視される。 — frame-ancestors、report-uri、sandbox のような一部のディレクティブは、<meta> タグではなく本物の HTTP ヘッダーとしてのみ機能します。それらにはヘッダーのスニペットを優先してください。
- Report-Only モードが、ログに記録するだけでなくリクエストをブロックしている。 — ヘッダー名を確認してください。強制は Content-Security-Policy を、監視は Content-Security-Policy-Report-Only を使います。トグルがその名前を切り替えます。
よくある質問
- この CSP ジェネレーターは何を生成しますか?
- 選んだディレクティブとソースから完全な Content-Security-Policy ヘッダーの値を構築し、その後、生のヘッダー、HTML メタタグ、そして設定に貼り付けられる nginx と Apache の add_header スニペットを提供します。
- どの CSP ソースがシングルクォートを付けられ、どれが付かないのですか?
- 'self'、'none'、'unsafe-inline'、'unsafe-eval'、'strict-dynamic' のようなキーワードソースと、nonce やハッシュはシングルクォートで囲まれます。https:、data:、cdn.example.com のようなホストやスキームは裸のまま残されます。ツールがそれらを正しくクォートします。
- report-only トグルは何のためのものですか?
- ヘッダー名を Content-Security-Policy-Report-Only に切り替えます。これは何もブロックせずに違反を報告します。稼働中のサイトで新しいポリシーを段階導入し、強制する前にコンソールを見るのに使ってください。
- ポリシー全体を CSP メタタグとして配信できますか?
- ほとんどの場合はできます — ツールは強制ポリシーの <meta http-equiv> タグを出力します。ただし frame-ancestors、report-uri、report-to、sandbox はメタタグでは無視されるので、ポリシーがそれらに依存する場合は HTTP ヘッダーのスニペットを使ってください。
- なぜヘッダーは、入力しなかったディレクティブを省くのですか?
- ソースのないディレクティブは、出力をきれいで有効なまま保つために落とされます。default-src は空のままにした任意の fetch ディレクティブのフォールバックとして働くので、異なるものだけを上書きすればよいのです。
- CSP ヘッダーを構築すると、私のホストはどこかに送られますか?
- いいえ。CSP ジェネレーターは完全にブラウザ内で動作します。入力したディレクティブとホストは端末上に留まり、ArrayKit にアップロードされることはありません。
関連ツール
すべての ArrayKit ツール