generate / security
CSPヘッダー生成ツール
Content-Security-Policy ヘッダーを GUI で簡単に生成します。 各ディレクティブをON/OFFで切り替え、値を設定するだけでCSP文字列が完成します。 入力データはサーバーに送信されません。
default-srcすべてのリソースのデフォルトポリシー
script-srcJavaScriptのロード元を制御
style-srcCSSのロード元を制御
img-src画像のロード元を制御
connect-srcfetch/XHR/WebSocketの接続先を制御
font-srcフォントのロード元を制御
object-srcプラグイン(object/embed)のロード元を制御
media-srcaudio/videoのロード元を制御
frame-srciframe/frameのロード元を制御
form-actionフォームのsubmit先を制御
生成された Content-Security-Policy ヘッダー
default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data:; connect-src 'self'; font-src 'self'; object-src 'none'; media-src 'self'; frame-src 'none'; form-action 'self'
使い方
01- 各ディレクティブ左端のトグルで有効・無効を切り替えます
- テキスト入力欄にスペース区切りで許可するオリジンや値を入力します
- よく使う値はプリセットボタンをクリックすると自動追加されます
- 生成されたCSPヘッダー文字列を「クリップボードにコピー」で取得します
- 既存のCSPヘッダーを「インポート」欄に貼り付けると設定を取り込めます
実装コード
02コアロジックはCSP文字列のビルドとパースのみ。セミコロン区切りで各ディレクティブを結合・分解します。 外部ライブラリ不要でそのままコピーしてご利用いただけます。
export function buildCspHeader(config: Record<string, string[]>): string {
return Object.entries(config)
.filter(([, values]) => values.length > 0)
.map(([directive, values]) => `${directive} ${values.join(' ')}`)
.join('; ')
}
export function parseCspHeader(header: string): Record<string, string[]> {
const result: Record<string, string[]> = {}
const directives = header.split(';').map(d => d.trim()).filter(Boolean)
for (const directive of directives) {
const parts = directive.split(/\s+/)
const name = parts[0].toLowerCase()
const values = parts.slice(1)
result[name] = values
}
return result
}よくある使用例・注意点
03最小構成から始める
まず
default-src 'self' だけを有効にし、エラーを見ながら必要なディレクティブを追加していくのが安全です。最初から広い許可を与えると CSP の効果が薄れます。'unsafe-inline' と 'unsafe-eval' の注意
'unsafe-inline' はインラインスクリプト・スタイルを許可し、XSS対策を弱めます。代わりに nonce-xxx や sha256-xxx ハッシュを使いましょう。Nginx / Apache での設定例
Nginxでは
add_header Content-Security-Policy "生成した値" always; を server ブロックに追加します。Apache は Header always set Content-Security-Policy "値" を使います。report-uri / report-to での違反収集
本番適用前に
Content-Security-Policy-Report-Only ヘッダーでテストするのが推奨です。違反レポートを収集してから本番の CSP を固めましょう。プライバシーについて
入力した値はブラウザ内のみで処理されます。サーバーには一切送信されないため、内部ドメイン名を含む CSP 設定も安全に作成できます。
関連ツール
04ソースコード
05このツールのソースコード(テストコードを含む)はGitHubで公開しています。 MITライセンスで自由に利用・改変できます。
GitHub でコードを見る →