以前、
Content Security Policy (CSP) の report を 10 日くらい集計して、ポリシーを見直す(の途中) | Monotalk
で、Content Security Policy を集計し、修正を行いましたが、
最近 AMP 向けの HTML を作成したため、未定義のドメインでエラーが出ているので、
再集計して、ポリシー 定義を見直したいと思います。
CSP の report の結果に影響しそうなことで、最近実施したこと
最近実施したことで CSP の report の結果に影響しそうなことは以下になります。
-
Google Tag Manager の設置
-
AMP 対応
現在のポリシー定義
現状のポリシー定義は以下の通りです。
Content-Security-Policy-Report-Only:
default-src 'self'; frame-src 'self' googleads.g.doubleclick.net staticxx.facebook.com *.disqus.com disqus.com;
script-src 'self' 'unsafe-inline' 'unsafe-eval' pagead2.googlesyndication.com www.google-analytics.com *.disqus.com c.disquscdn.com; style-src 'self' 'unsafe-inline' *.disquscdn.com;
img-src 'self' *.disqus.com *.disquscdn.com *.googleusercontent.com *.google.com *.googledrive.comgoogledrive.com data:;
connect-src 'self' *.disqus.com;
font-src 'self' fonts.gstatic.com;
report-uri /report/
CSPのレポートデータの収集と、集計について
Content Security Policy (CSP) の report を 10 日くらい集計して、ポリシーを見直す(の途中) | Monotalk
に記載している内容と変わりはないため、省略します。
集計と、修正方針
violated-directive
ごとの、blocked-uri
を集計、その結果を元に、ポリシー 定義を修正していきます。1
前回 Google データスタジオを使ってましたが、MAC の Chrome が何故かクラッシュするようになり、
MongoDB のクエリによる集計に切り替えました.
集計のため、以下のような Mongo script を作成しました。
- countViolatedDirectiveGroupByBlockedUri.js
var count = 0; // Query db.reports.aggregate([ { $match: { "violated-directive": violatedDirective, create_date: {$gte: ISODate(createDate)} } }, { $group: { "_id": { "blocked-uri": "$blocked-uri" }, "count": { "$sum": 1 } } }, { $sort: { "count": -1 } } ]).forEach(function(element){ if(count == 0) { print("###violated-directive = " + violatedDirective + "###") print("|" + "count" + "|" + "blocked-uri" + "|"); print("|:-------------------|:--------------|"); } count++; print("|" + element.count + "|" + element._id["blocked-uri"] + "|"); });
コマンドラインからは、以下のように実行できます。
mongo localhost/csp_analyze --quiet --eval "var violatedDirective='script-src', createDate='2017-05-08T00:00:00.0Z'" countViolatedDirectiveGroupByBlockedUri.js
violated-directive
ごとの blocked-uri
の集計結果
violated-directive : script-src
での 集計
- 結果
-
各ドメインごとの設定要否
script-src
は、設定をしていなかったのが、許可設定していたつもりだった ドメイン まで、report 対象になっていました。-
disqus.com
disqus のドメインなので許可します。 -
www.googletagmanager.com
goolge tag manager の ドメインなので、許可します。 -
ssl.google-analytics.com
google analytics の ドメインなので、許可します。 -
cdn.ampproject.org
amp の cdn の ドメインなので、許可します。 -
about
こちらは、よくわからなかったので調べたところ以下の記事を見つけました。
ブラウザのAddOnが影響して、CSPのポリシー違反となるようです。一旦無視します。
apache 2.4 - Content security policy: blocked uri “about” - Server Fault
content security policy - Why would I get a CSP violation for the blocked-uri ‘about’? - Stack Overflow -
data URLでのコンテンツの埋込 による、エラーです。
基本的にやってないのですが、adsense などがやったりしているのかもしれません。
一旦無視して様子を見ます。 -
max-x.men
aguse.jp: ウェブ調査 で調べた限りはSpam サイトではないようです。
ユーザのブックマークレット的なものの設定で出ているのかもしれません。
一旦無視して様子を見ます。 -
xx.xcetkbl.com これは前回も見ました。
aguse.jp: ウェブ調査 で調べた限りはSpam サイトではないようです。
一旦無視して様子を見ます。
-
violated-directive : style-src
での 集計
- 結果
count | blocked-uri |
---|---|
11 | https://tagmanager.google.com/debug/css.css |
11 | https://fonts.googleapis.com/icon?family=Material+Icons+Extended |
-
各ドメインごとの設定要否
以下、ドメインですがサイト上にリンク貼っているわけではないですが、
違反ポリシーが記録されていました。
こちら、何故記録されていたかというと、google tag manager の debug 時にどうも記録されるようです。-
tagmanager.google.com
タグマネージャのサイトのドメインです。 デバック起動時に読み込まれるようなので、許可設定しました。 -
fonts.googleapis.com こちらは、タグマネージャのデバッグウィンドウを切り替えてると、
fontの読み込みが行われますが、その際に設定されていました。
許可設定しました。
-
violated-directive : frame-src
での 集計
- 結果
-
各ドメインごとの設定要否
-
kemsakurai.github.io
自分自身のgithub.ioドメインです。
これは許可しておきます。 -
xx.xcetkbl.com また、こいつがいます。
aguse.jp: ウェブ調査 で調べた限りはSpam サイトではないようです。
一旦無視して様子を見ます。 -
d-16772114932630796498.ampproject.net 等
これは、amp ページの場合に、読み込まれる、https://d-3111818505141536503.ampproject.net/1499459975276/frame.html
といった形式のiframe で出力されていました。
実際何に使用しているのか不明ですが、必ず出るようなので、許可設定しておきます。 -
data
件数が少ないため、一旦無視して様子を見ます。 -
gateway.zscalertwo.net
これは、セキュリティソフトミドルウェアで出力されているように思います。
件数が少ないため、一旦無視して様子を見ます。
Zscaler - 製品情報|ノックス株式会社 -
swg-msg.securewg.jp
これも、セキュリティソフトミドルウェアで出力されているように思います。
件数が少ないため、一旦無視して様子を見ます。
WebセキュリティならWebゲートウェイサービス - IIJ
-
violated-directive : connect-src
での 集計
- 結果
-
各ドメインごとの設定要否
-
pagead2.googlesyndication.com
AMP 広告ユニットを作成する - AdSense ヘルプ
に記載がありますが、amp のadsbygoogle.js
の読み込み先ドメインになります。
許可します。 -
3p.ampproject.net
Changes from ads.ampproject.net to 3p.ampproject.net · Issue #224 · ampproject/amphtml というIssueがあるので、amp関連のドメインかと思われます。
許可します。 -
www.googletagmanager.com
Google tag manager のドメインなので許可します。 -
d-8663767972041812495.ampproject.net 等
これは、amp ページの場合に、読み込まれる、https://d-3111818505141536503.ampproject.net/1499459975276/frame.html
といった形式のiframe で出力されていました。
実際何に使用しているのか不明ですが、必ず出るようなので、許可設定しておきます。 -
csi.gstatic.com
野良黒 gstatic.comってなんだこいつなんだ
ASCII.jp:現れては消える奇妙なサイトを追うブルーコートの研究者の話 (1/2)
を読む限り、google の cdn のようなので許可します。
-
violated-directive : img-src
での 集計
- 結果
-
各ドメインごとの設定要否
ここは、設定自体してなかったのか、過去に設定した覚えのあるドメインが多く出力されていました。-
googledrive.com
Google Drive のドメインです。許可します。 -
drive.google.com
Google Drive のドメインです。許可します。 -
www.gstatic.com
Google の CDI のドメインです。許可します。 -
www.monotalk.xyz
自サイトのドメインです。許可します。 -
ssl.gstatic.com
Google の CDI のドメインです。許可します。 -
ir-jp.amazon-adsystem.com
Amazon アソシエイトのドメインです。許可します。 -
ms-browser-extension
IEのブラウザのplugin かなにかで出力されているようです。一旦無視します。
CSP Report 収集と実レポートの考察 | blog.jxck.io
-
violated-directive : font-src
での 集計
- 結果
- 各ドメインごとの設定要否
ここは、正直何をトリガーで読み込みにいっているのか、
よくわかりませんでした。一旦無視します。- themes.googleusercontent.com
- sxt.cdn.skype.com
- css.zohostatic.com
violated-directive : object-src
での 集計
- 結果
count | blocked-uri |
---|---|
35 | https://pagead2.googlesyndication.com |
- 各ドメインごとの設定要否
- pagead2.googlesyndication.com
AMP 広告ユニットを作成する - AdSense ヘルプ
に記載がありますが、AdSense のドメインになります。
許可します。
- pagead2.googlesyndication.com
変更後のポリシー定義
出力された定義
変更後のポリシーは以下の通りです。
Content-Security-Policy-Report-Only:
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;
style-src 'self' 'unsafe-inline' *.disquscdn.com *.google.com *.googleapis.com;
default-src 'self';
frame-src 'self' googleads.g.doubleclick.net staticxx.facebook.com *.disqus.com disqus.com kemsakurai.github.io *.ampproject.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;
connect-src 'self' *.disqus.com;
object-src pagead2.googlesyndication.com;
font-src 'self' fonts.gstatic.com;
report-uri /report/
追記
firefox で変更後ポリシーを確認していたところ、
Content Security Policy: ディレクティブ ‘frame-src’ は推奨されません。代わりにディレクティブ ‘child-src’ を使用してください。
というメッセージが出力されていました。
CSP ディレクティブ frame-src が child-src に置き換えられる形で廃止予定となりました | Firefox サイト互換性情報
とのことで、frame-src を child-src に変更しました。
今後
まだ、ポリシー ON にはできない印象です。
2、3ヶ月後に、再度実行して経過を観察しようと思います。
以上です。
コメント