本文へスキップ

CSP作成

CSP Builder

案内に沿った入力か違反レポートからContent-Security-Policyを組み立て、各ディレクティブの意味を説明します。

Content-Security-Policyは、クロスサイトスクリプティングの欠陥を、乗っ取りからコンソールの1行の警告に変えるヘッダーです。同時に、何もしない形のまま配信されることがいちばん多いヘッダーでもあります。ここではディレクティブを1つずつ組み立て、それぞれが実際に何を防いでいるのかを説明します。

🔒 ブラウザの中だけで動きますcspheaderswebgenerator
既存のポリシーを読み込む

明示的に設定しなかった取得系ディレクティブすべての既定値です。

スクリプトをどこから読み込めるか。XSS を実際に止めるのはこのディレクティブです。

スタイルシートをどこから読み込めるか。

画像をどこから読み込めるか。

フォントをどこから読み込めるか。

fetch・XHR・WebSocket・EventSource がどこへ接続できるか。

<audio> と <video> をどこから読み込めるか。

<object>/<embed> をどこから読み込めるか。通常は 'none' が無難です。

<iframe> の文書をどこから読み込めるか。

誰がこのページをフレームに入れられるか。X-Frame-Options の現代版です。

<base href> に何を設定できるか。'self' か 'none' に絞ってください。

フォームがどこへ送信できるか。

Worker・SharedWorker・Service Worker をどこから読み込めるか。

ウェブアプリマニフェストをどこから読み込めるか。

http:// のサブリソースへのリクエストを https:// に書き換えます。

http:// のサブリソースを一律で遮断します(旧仕様)。

  • ⚠ frame-ancestors がありません。誰がこのページをフレームに入れられるかを決めるなら、'none' か 'self' で追加してください。
  • ⚠ base-uri がありません。<base> タグの注入を止めるには base-uri 'self' を追加してください。

Content-Security-Policy

default-src 'self'; script-src 'self'

使い方

  1. フォームから始めるか、レポートから始めます

    案内付きのフォームは、スクリプト・スタイル・画像・通信がどこから来るのかを尋ねます。違反レポートがすでに手元にあるなら、それを貼り付ければ、実際に読み込まれたものから許可元を導きます。

  2. まずレポート専用モードで配信します

    `Content-Security-Policy-Report-Only`は、遮断せずに違反を記録します。1週間動かせば、誰も覚えていなかった第三者の埋め込みをレポートが名指ししてくれます。

  3. `unsafe-inline`は最後に、正しく外します

    `script-src 'unsafe-inline'`の入ったポリシーは、ほとんど何も遮断しません。レスポンスごとのnonceか、インラインのブロックのハッシュに置き換えてください。このツールはどちらの形も生成します。

よくある質問

このツールは自分のサイトを検査しますか。

いいえ。あなたが伝えた内容からポリシーを組み立てて説明するだけです。稼働中のサイトがいま何を送っているかを確かめるのは、セキュリティヘッダー診断の仕事です。

ポリシーを書いたのに、まだインラインのスクリプトが通ります。

同じディレクティブの中に`unsafe-inline`も入っていると、`script-src`のnonceやハッシュは後方互換のために無視されるからです。両方を残すことはできません。後方互換の側が勝ちます。

`default-src 'self'`だけで十分ですか。

土台としてはよいのですが、いくつかのディレクティブはそこへ落ちてきません。`frame-ancestors`、`form-action`、`base-uri`などです。それらは明示的に設定する必要があり、このツールはそれを設定します。

ここから渡せます

次の一手

このツールが出したものをそのまま受け取れる道具です。

CORSテスター

CORS Tester

指定した生成元からブラウザが送るプリフライトとOriginを載せたGETを実際に送り、Fetch標準の規則でどのヘッダーが止めたのかを説明します。

サーバーを使います

HTTPヘッダー確認

HTTP Header Inspector

URLを取得して、レスポンスヘッダーの全文・リダイレクトの連鎖・所要時間・使われた圧縮方式を表示します。

サーバーを使います

セキュリティヘッダー診断

Security Header Scan

サイトのHSTS・CSP・フレーム・リファラ・権限の各ヘッダーを採点し、何を足すべきかを示します。

サーバーを使います

SRIハッシュ生成

Subresource Integrity Hash

貼り付けたか置いたスクリプトやスタイルシートのSubresource Integrity属性(sha256/384/512)を計算します。

ローカル処理、必要ならサーバーが補助します

怪しいURLの確認

Suspicious URL Check

開く前にリンクの形(紛らわしい文字・IPそのままのホスト・@のごまかし・深いサブドメイン・妙なポート・短縮サービス)を調べ、望めばリダイレクトをたどってドメインの登録時期も引きます(評判データベースは使いません)。

ローカル処理、必要ならサーバーが補助します

Base64エンコード・デコード

Base64 Encoder & Decoder

テキストでもファイルでもBase64とBase64URLを符号化・復号し、UTF-8も正しく扱います。

ブラウザの中だけで動きます