CSP とは。セキュリティ上の役割と、中小企業に設定が必要か
ページが読み込んでよいスクリプト等の出どころを、ブラウザに伝える設定。
ひとことで
CSP(正式名は Content-Security-Policy)は、「このページが読み込んでよいスクリプト(ページを動かすプログラム)や画像は、ここから来たものだけ」とブラウザに伝える設定です。サイトの応答にヘッダーという形で付けます。許可していない場所から来たプログラムは、ブラウザが動かしません。
無いと何が起きるか
サイトに弱いところがあって、悪意のあるスクリプトを差し込まれた場合に、それを止める仕組みが働きません。差し込まれたスクリプトは、入力フォームの内容を外に送ったり、訪問者を別のサイトへ誘導したりできます。CSP は弱いところをふさぐものではなく、ふさぎ損ねたときの被害を小さくする「二重の備え」です。
なお CSP には、ほかのサイトに自社ページを埋め込ませない指定(frame-ancestors)も含まれ、X-Frame-Options と同じ役割も果たせます。
必要か
会社案内だけのサイトなら、ほかの対策(PHP や WordPress を新しく保つことなど)を先に済ませてから、で構いません。問い合わせフォーム、会員ページ、ネットショップのように入力を受け付ける画面があるなら、設定する意味が大きくなります。
いきなり厳しく設定すると、アクセス解析や地図などの外部の部品が止まることがあります。最初は違反を「報告するだけ」のモード(Content-Security-Policy-Report-Only)で様子を見て、問題がないと分かってから本番に切り替える、という小さな始め方ができます。
頼み方
制作会社・保守担当には「Content-Security-Policy を、まず Report-Only で設定して、外部の読み込み先を洗い出してもらえますか」と伝えれば通じます。あわせて「frame-ancestors ‘self’ も入れてください」と添えると、埋め込み防止も一度に済みます。
よくある質問
CSP が無いと言われました。今のサイトはまずい状態ですか。
中小企業のサイトでは設定していないことの方が多く、それだけで被害が出るわけではありません。問い合わせフォームや会員ページなど入力を受け付ける画面があるなら、優先して検討する価値があります。
CSP を設定すると、サイトが表示されなくなることはありますか。
許可の書き方が厳しすぎると、地図やアクセス解析などの外部の部品が動かなくなることがあります。そのため、最初は「報告だけ」の形で試してから本番に切り替えるのが一般的です。
自社のサイトで確かめる
ドメインを入れるだけで、この記事に出てきた項目が外からどう見えているかを無料で点検できます。設定は変えません。結果はその場で出ます。