Webセキュリティの小部屋

Twitter のフォローはこちらから Facebook ページはこちら RSSフィードのご登録はこちらから
公開日:2017年5月5日
最終更新日:2017年5月6日

Content Security Policy(CSP)をサイトに適用しました(Analytics,Adsenseも動くよ)

Web セキュリティのサイトであるのに WAF (Web Application Firewall) は導入していましたが、Content Security Policy (CSP)を適用していなかったので、ゴールデンウィークを利用して適用してみました。

Content Security Policy (CSP) は聞き慣れない単語かもしれませんが、クロスサイト・スクリプティング(XSS)を防ぐための技術で、信頼したオリジン(URLみたいなものかな)以外のスクリプトやスタイルシート、画像を含めたリソースを読み込まないことで XSS を防ぎます。

最近のブラウザは CSP に対応しているようですね。IE は微妙なようですが、CSP に対応していないブラウザは CSP を無視するだけなので動作に問題ありません。

最近は、広告経由でなウィルス感染が起きることがあるので、CSP を適用することは十分意味のあることだと思います。それは許可されたオリジンのサイトからしかスクリプトを実行できないからです。

ただ、ブログなどでは Google Analytics や Goolge Adsense、Facebook、Twitter などのスクリプトやウィジェットを組み込んでいるでしょうから CSP の設定は大変です。

かくいうこのサイトも同様で CSP を動作するようにするまでに結構苦労しました。ですので、その苦労の結果を公開しておこうと思います。Web サーバー は Apache で WordPress を使っています。

このサイトと同じであれば、以下の設定を /etc/httpd/conf/httpd.conf の最後に追記して、Apache を再起動するだけで動作するようになります。若干、セキュリティがゆるいのじゃないかという気がしないでもないですが、ここまでしないとブログが適正に動作しないので仕方ないですね。

Header always set content-security-policy "default-src 'self' ; script-src 'self' 'unsafe-inline' 'unsafe-eval' pagead2.googlesyndication.com tpc.googlesyndication.com googleads.g.doubleclick.net www.google.co.jp cse.google.co.jp apis.google.com www.google-analytics.com platform.twitter.com jsoon.digitiminimi.com www.facebook.com connect.facebook.net b.st-hatena.com media.line.naver.jp d.line-scdn.net scdn.line-apps.com cdn-ak.b.st-hatena.com media.line.me; font-src 'self' fonts.googleapis.com data:;style-src 'self' 'unsafe-inline' fonts.googleapis.com ajax.googleapis.com www.facebook.com d.line-scdn.net platform.twitter.com;img-src * data:;child-src apis.google.com accounts.google.com googleads.g.doubleclick.net www.facebook.com platform.twitter.com syndication.twitter.com staticxx.facebook.com timeline.line.me cdn.api.b.hatena.ne.jp jsoon.digitiminimi.com www.slideshare.net;object-src 'self' pagead2.googlesyndication.com;media-src 'self' pagead2.googlesyndication.com;connect-src 'self' pagead2.googlesyndication.com;"

細かい説明をすると切りがないのですが、まず default-src 'self’ ; を指定していることで、リソースの指定がない場合はこの設定が適用されます。’self’ というのは自分のサイト(オリジン)のことですね。

また、この設定は、Google Analytics, Google Adsense, Facebook, Twitter, LINE, はてなブックマーク, SlideShare などの設定が組み込まれているので、多くのサイトで動作すると思います。Google Analytics はリアルタイムで、Google Adsenseもクリックが発生しているのを確認してあります。

設定の細かいところは参考サイトを見ていただくとして、CSP の設定の具体例が少なかったので参考になれば幸いです。

そうそう。CSP のデバッグですが、私は Firefox の開発ツールのコンソールに出力されるエラーメッセージから対応方法を模索しました。エラーメッセージも分かりやすいものもありますが、そうでないものもあるので頑張ってください。

■参考サイト


スポンサーリンク





カテゴリー:ブログ

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA