Content-Security-Policyの解析
Content-Security-Policy(CSP)をディレクティブごとに分けて日本語で説明します。unsafe-inline や object-src・base-uri・frame-ancestors の指定漏れ、default-src へのフォールバック、重複や非推奨の書き方も指摘します。
CSP を貼り付けると、ディレクティブごとに分けて説明します。
指摘
ディレクティブの意味
| ディレクティブ | 意味と値 |
|---|
種類ごとに実際に効く指定
書いていない種類は default-src などへフォールバックします。base-uri / form-action / frame-ancestors はフォールバックしません。
| 種類 | 効いている指定 | 値 |
|---|
補足
-
Content-Security-Policy:で始まる行、-Report-Onlyのヘッダー、<meta http-equiv="Content-Security-Policy" content="…">のどれを貼っても読みます。 - 判定は CSP Level 3 の仕様と主要ブラウザの挙動に合わせています。 セキュリティ診断ではありません。よくある弱い書き方を指摘するだけで、指摘がなくても安全とは限りません。
- 同じディレクティブを 2 回書くと、ブラウザは 2 つ目以降を無視します。整形結果には書かれたまま残します。
- カンマでつないだ複数のポリシー(同名ヘッダーを結合したもの)は、それぞれが別々に適用されるため 1 つずつ貼り付けてください。
- HTTP ヘッダー全体を読むなら HTTPヘッダーの整形・解説 も使えます。
- 貼り付けた内容は、この端末の外へ出ません。
よくある質問
このツールで CSP が安全かどうか判定できますか?
できません。行うのは、ディレクティブごとの意味の説明と、'unsafe-inline' や object-src・base-uri・frame-ancestors の指定漏れのような、よく知られた弱い書き方の指摘までです。指摘がなくても安全とは限らず、サイトの作りに合っているかは判断していません。
ヘッダー名付きや meta タグのまま貼り付けられますか?
貼り付けられます。「Content-Security-Policy:」で始まる行、Report-Only のヘッダー、<meta http-equiv="Content-Security-Policy" content="…"> のどれでも、ポリシーの部分だけを取り出して読みます。meta タグの場合は、そこでは無視される frame-ancestors・report-uri・sandbox も指摘します。
script-src を書いていないとき、スクリプトには何が効きますか?
default-src が使われます。画面の「種類ごとに実際に効く指定」に、種類ごとにどのディレクティブが効いているかを出します。ただし base-uri・form-action・frame-ancestors は default-src へフォールバックしないため、書かなければ制限なしになります。
nonce と 'unsafe-inline' を一緒に書くのは危険ですか?
対応ブラウザでは危険ではありません。CSP Level 2 以降のブラウザは、nonce かハッシュがあると 'unsafe-inline' を無視するため、古いブラウザ向けの互換用として併記する書き方として扱い、「参考」として表示します。nonce もハッシュもなければ「危険」として指摘します。
同じディレクティブを 2 回書くとどうなりますか?
ブラウザは最初の 1 つだけを使い、2 つ目以降は無視します。このツールでは 2 つ目以降に「重複・無視される」と表示し、指摘の判定にも最初の 1 つだけを使います。