このブログに過去、Content Security Policy を reports-only で適用しました。
前回 ポリシーを変更してから5-6ヶ月が経過しましたので、再度レポートを集計し、定義を見直していきます。
結果を以下に記載します。

[TOC]


前回変更時の記事

Content Security Policy 適用後の経過を観察する 2017年11月 | Monotalk


現在のポリシー定義

現在のポリシー定義は以下の通りです。
2018年の1月に VPS サーバを移行しており、その影響で、前回変更後とは定義が一致していないかもしれません。

Content-Security-Policy-Report-Only:
font-src 'self' fonts.gstatic.com *.monotalk.xyz; 
object-src pagead2.googlesyndication.com; 
default-src 'self'; 
child-src 'self' googleads.g.doubleclick.net staticxx.facebook.com *.disqus.com kemsakurai.github.io *.ampproject.net syndication.twitter.com platform.twitter.com www.googletagmanager.com rcm-fe.amazon-adsystem.com; 
connect-src 'self' *.disqus.com uh0.nakanohito.jp www.google-analytics.com pagead2.googlesyndication.com syndication.twitter.com 3p.ampproject.net www.googletagmanager.com; style-src 'self' 'unsafe-inline' *.disquscdn.com *.google.com *.googleapis.com *.monotalk.xyz platform.twitter.com ton.twimg.com ;
script-src 'self' 'unsafe-inline' 'unsafe-eval' pagead2.googlesyndication.com www.google-analytics.com *.disqus.com c.disquscdn.com disqus.com *.googletagmanager.com *.google-analytics.com *.ampproject.org adservice.google.com tagmanager.google.com adservice.google.co.jp uh.nakanohito.jp platform.twitter.com cdn.syndication.twimg.com tagmanager.google.com googleads.g.doubleclick.net; 
img-src 'self' *.disqus.com *.disquscdn.com *.googleusercontent.com *.google.com *.googledrive.comgoogledrive.com data: googledrive.com drive.google.com www.gstatic.com www.monotalk.xyz ssl.gstatic.com ir-jp.amazon-adsystem.com ssl.google-analytics.com;
report-uri /report/


CSP のレポートデータの収集と、集計について

MongoDB レポートデータは登録しています。
収集、集計方法については以下をご確認ください。
Content Security Policy (CSP) の report を 10 日くらい集計して、ポリシーを見直す(の途中) | Monotalk


集計と、修正の方針

violated-directive ごとのblocked-uri集計、その結果を元にポリシー定義を修正しています。
集計には、AMP HTML を作成後に、Content Security Policy (CSP) の report を 集計して、ポリシーを見直す | Monotalk記載している MongoDB のクエリ を使用しています。
TOP10 以下も存在しますが、ほとんどのアクセスが TOP10以内に含まれていたため、TOP10以下は除外しています。

violated-directive ごとの blocked-uri集計結果

violated-directive : script-src での 集計

  • 結果
countblocked-uri
5019https://cdn.mxpnl.com/libs/mixpanel-2-latest.min.js
407https://cdn.mxpnl.com
160https://adservice.google.co.kr/adsid/integrator.js?domain=www.monotalk.xyz
154https://adservice.google.com.mm/adsid/integrator.js?domain=www.monotalk.xyz
151data
101https://adservice.google.co.in/adsid/integrator.js?domain=www.monotalk.xyz
71https://adservice.google.de/adsid/integrator.js?domain=www.monotalk.xyz
60https://adservice.google.com.tw/adsid/integrator.js?domain=www.monotalk.xyz
46https://adservice.google.fr/adsid/integrator.js?domain=www.monotalk.xyz
46https://adservice.google.com.au/adsid/integrator.js?domain=www.monotalk.xyz
  • 各ドメインごとの設定要否

    • cdn.mxpnl.com
      最近、Mixpanel の設定をしたのですが、Mixpanl のドメインの外部スクリプトでの警告です。許可します。

    • adservice.google.co.kr Google ads 関連のドメインです。
      Mixpanel と data 以外、Google ads の関連ドメインです。
      関連ドメインを許可します。

    • data script-src data 属性というのがよくわかりません。これは、無視して様子をみます。

violated-directive : style-src での 集計

  • 結果
countblocked-uri
86http://tkx-224-2xxxx.vs.sakura.ne.jp/static/CACHE/css/ba26ea17e1bf.css
21https://maxcdn.bootstrapcdn.com
9https://pwm-image.trendmicro.jp/3.8/extensionFrame/styles/engineV3.css
7https://cdn.jsdelivr.net
7https://cdnjs.cloudflare.com
7https://rawgit.com
3https://tkx-224-2xxxx.vs.sakura.ne.jp
1data
  • 各ドメインごとの設定要否
    style-srcついては、前回の設定で大分警告が抑えられています 。
    tkx-224-2xxxx.vs.sakura.ne.jpこの VPS の ドメインで、VPS 移行時に記録されているものです。
    数も少ないので、無視して陽数を見ます。

violated-directive : frame-src での 集計

child-srcframe-src での集計結果を添付します。

  • 結果 child-src での集計結果

前回集計時は、1件も記録されていなかったのですが、今回は記録されています。

countblocked-uri
1767https://disqus.com
1592https://disqusads.com
7data
4http://notify.bluecoat.com
1https://securepubads.g.doubleclick.net
  • 結果 frame-src での集計結果
countblocked-uri
34425https://disqus.com
8834https://disqusads.com
2205
143data
90https://api.weblio.jp
40chrome-error
27https://securepubads.g.doubleclick.net
16http://rcm-fe.amazon-adsystem.com
16https://disqus.com/
14https://cdn.ritekit.com

violated-directive : font-src での集計

  • 結果
countblocked-uri
35180data
12https://webfonts.zohostatic.com/opensanslight/font.woff
12https://webfonts.zohostatic.com/opensans/font.ttf
12https://webfonts.zohostatic.com/opensanslight/font.woff2
12https://webfonts.zohostatic.com/opensans/font.woff2
12https://webfonts.zohostatic.com/opensans/font.woff
12https://webfonts.zohostatic.com/opensanslight/font.ttf
3https://c.disquscdn.com
3https://cdn.emojidex.com/scripts/fonts/emojidex-ui/emojidex-ui-icon.ttf
3https://cdn.emojidex.com/scripts/fonts/emojidex-ui/emojidex-ui-icon.woff
  • 各ドメインごとの設定要否

    • data
      これは、自ドメインの font ファイル Webpack で JavaScript に展開するようにした? ことにより発生しています。
      許可します。

    • webfonts.zohostatic.com
      font 関連の cdn? かと思いますが、使用している覚えがありません。無視します。

    • c.disquscdn.com
      これは、disqus の CDN かと思います。数が少ないので無視します。

    • cdn.emojidex.com
      emojidex-web/README.ja.md at master · emojidex/emojidex-web です。
      ブックマークレットかなにかで出ているのかと思います。 無視します。

violated-directive = object-src での 集計

  • 結果
countblocked-uri

0件です。

violated-directive = connect-src での 集計

  • 結果
countblocked-uri

0件です。

violated-directive = img-src での 集計

img-src チェックしていなかったようで、大量の警告が登録されておりました。
直近1ヶ月分のみの 集計を撮りました。

  • 結果
countblocked-uri
19797https://stats.g.doubleclick.net
7092https://bcp.crwdcntrl.net
3530https://tags.rd.linksynergy.com
2762https://magnetic.t.domdex.com
2644https://cdn.viglink.com
2550https://api.viglink.com
1293https://www.google-analytics.com
384https://pagead2.googlesyndication.com/pagead/images/x_button_blue2.svg
318http://drive.google.com/uc?export=view&id=0By5O5w7iwOMORllFZkpaLUlVTVE
215https://pagead2.googlesyndication.com

まとめ

Content Security Policy の report を集計し、定義を修正しました。以下、まとめます。

  • Google アドセンス。 アドセンスを入れている限りは、警告を完全に除去するのは難しい。
    広告プロバイダの導入しているサービスで警告が出ていそうにも思います。
    CSP でもう一つ設定ができたりするといいのかもしれません。許可しているドメインが許可しているポリシーは警告を出さないとかできないですかね。

  • 外部サービスのタグを埋め込む場合も、見直しは必要。
    同じことの繰り返しですが、タグを仕込むたびに警告が出力されます。

  • MongoDB での集計、レポートが現状の仕組みだとつらい。
    MongoDB から 何かのグラフツールに連携、異常検知 ができるようにしたいです。

以上です。

コメント