CSPは「全サイト必須」ではない ― 自社サイトに必要かを5分で見分ける
中小企業サイトの多くがCSP(Content Security Policy)未対応です。ただし、すべてのサイトにCSPが必須かというと違います。自社サイトに必要かどうかを、サイトの種別から見分ける方法を整理します。
英国航空(British Airways)は2018年、自社の決済ページに忍び込んだわずか数十行のスクリプトによって、約38万件のクレジットカード情報を抜き取られました。入力内容を攻撃者のサーバーへ送っていたこのコードは、CSPで「どこへ送ってよいか」を制限していれば防げた事例として、いまでも引用されます。
このような事件を見ると「うちのサイトもCSPを入れなければ」と思いがちです。ただ、すべてのサイトにCSPが必須というわけではありません。自社サイトの種別で必要性が大きく変わります。
CSPは「XSS対策」のための仕組み
CSP(Content Security Policy)は、サイトがブラウザに「このサイトで実行していいスクリプトはこのリストの中だけ」と宣言する仕組みです。攻撃者が悪意あるスクリプトを画面に差し込もうとしても、リストにないスクリプトはブラウザが実行を拒否します。
CSPが守るのは、XSS(クロスサイトスクリプティング)という攻撃。ざっくり言えば「攻撃者が自社サイトに細工して、訪問者のブラウザで悪意あるスクリプトを動かす」攻撃です。
ここで重要なのは、XSSが成立するには「攻撃者が新しいスクリプトを差し込む経路」が必要だということです。その経路は、サイトが動的かどうかに依存します。
自社サイトはどっちか
ざっくり次の表で、自社サイトがどこに該当するか確認してください。
CSPの優先度が高いサイト(CSPが活きる)
- 予約フォーム・問い合わせフォームがある
- 会員ポータル・ログイン機能がある
- 物販やオンライン決済機能がある
- WordPressや他のCMS(コンテンツ管理システム:管理画面からブログ記事やページを更新できる仕組み)で作られている
CSPの優先度が低いサイト
- 会社概要・営業時間・事業内容を載せているだけの情報サイト
- フォーム・ログインがなく、動的な処理をしていない静的サイト
判断のポイントは「訪問者がサイトに何かを入力するか」「裏でCMSが動いているか」です。
WordPressを使っている会社は特に注意
中小企業のサイトはWordPressで作られていることが多く、これがひとつのリスク源になります。WordPressはプラグインの脆弱性が頻繁に発見されるソフトウェアで、更新されずに放置されたプラグインがXSSの入口になります。
具体的なシナリオを一つ挙げます。
予約カレンダーや問い合わせ系のプラグインに脆弱性があり、URLパラメータをそのまま画面に表示する処理が存在したとします。攻撃者は次のような細工をしたURLを作ります。
https://your-company.co.jp/?date=<script>...</script>
これをSMSやメールで「ご予約の確認はこちら」と顧客に送ります。顧客がリンクをクリックすると、ブラウザは正規の your-company.co.jp にアクセスしますが、プラグインが URLパラメータを画面に反映する際にスクリプトを一緒に埋め込んでしまい、顧客のブラウザで攻撃者のコードが動きます。
顧客から見ると、アドレスバーは正規のドメイン、HTTPSの鍵マークも出ている。「公式サイトを開いている」という認識のまま、偽の入力フォームに個人情報を入力してしまう、というケースが起こりえます。
CSPが厳格に設定されていれば、ブラウザは「このスクリプトは許可リストにない」と判断して実行を拒否します。これがCSPの守備範囲です。
「設定している」だけでは不十分
CSPには、制作会社やベンダーが「設定しています」と答えても実質的に効いていない設定があります。技術的には unsafe-inline という許可項目を有効にしている場合で、これだとXSSのほとんどの攻撃パターンを止められません。
経営者が中身まで判断する必要はありませんが、ベンダーに確認するときに「unsafe-inline は使っていますか」と一言付け加えるだけで、設定の質が分かります。
経営者として確認すべきこと
-
自社サイトに動的機能(フォーム・ログイン・予約システム)があるか確認する。あればCSPの優先度は高、なければ他の対策(HTTPS化、サーバーのパッチ適用)の方が先です。
-
scan(サイト診断)で自社サイトをチェックする。ドメインを入れるだけで、CSPの有無が分かります。WordPressを使っているかも判定されます。
-
WordPressを使っているなら、プラグインの更新運用をベンダーに確認する。「プラグインのアップデートは誰が、いつやっていますか」を聞いてください。CSPと並行して、根本のバグを減らす運用が必要です。
締め
「多くのサイトがCSP未対応」というデータを見ると焦りますが、すべてのサイトに必須というわけではありません。情報発信だけのシンプルなサイトであれば、CSPより先にやるべきことが他にあります。
逆に、フォーム・ログイン・WordPressのいずれかを使っているなら、CSPは入れる価値が高い対策です。「設定する/しない」の判断材料として、自社サイトがどちらの分類かをまず確認してください。
技術的にもう一歩踏み込みたい方は、CSPを技術的に深掘りする記事もあります。サイト種別ごとの詳細マトリクス、XSSの仕組み、CSPで防げないケース(Magecart型)、SRI併用、unsafe-inline の罠などを整理しています。