web-dev-qa-db-ja.com

Google Adwords CSP(コンテンツセキュリティポリシー)img-src

Google AdWordsのコンバージョントラッキングを許可するには、Content-Security-Policyヘッダーのimg-srcディレクティブのどのドメイン/プロトコルが必要ですか。

テストから、google_trackConversionを呼び出すと、ブラウザーは、さまざまなドメイン間の302リダイレクトのチェーンに従うsrcを使用して画像を作成するように見えます...

www.googleadservices.com ->
googleads.g.doubleclick.net ->
www.google.com ->
www.google.co.uk

最後の.co.ukは不審に思われます。私たちは英国からテストしているので、他の国から呼び出されたトラッキングが他のドメインにリダイレクトされるのではないかと心配しています。

追跡を機能させるために開く必要があるドメインの完全なリストは何ですか?


コメントでリクエストされているように、最初のリクエストのパスコンポーネントの例は次のとおりです。

pagead/conversion/979383382/?random=1452934690748&cv=8&fst=1452934690748&num=1&fmt=3&label=jvoMCNP4umIQ1uiA0wM&guid=ON&u_h=1080&u_w=1920&u_ah=1033&u_aw=1920&u_cd=24&u_his=18&u_tz=0&u_Java=false&u_nplug=5&u_nmime=7&frm=0&url=https%3A//beta.captevate.com/payment%3Flevel%3Da00&async=1

2回目に変換を繰り返すと、最初のリクエストのパスコンポーネントは

pagead/conversion/979383382/?random=1452934959209&cv=8&fst=1452934959209&num=1&fmt=3&label=jvoMCNP4umIQ1uiA0wM&guid=ON&u_h=1080&u_w=1920&u_ah=1033&u_aw=1920&u_cd=24&u_his=26&u_tz=0&u_Java=false&u_nplug=5&u_nmime=7&frm=0&url=https%3A//beta.captevate.com/payment%3Flevel%3Da00&async=1

無料のVPNサービスを使用していくつかの国(オランダとシンガポール)から接続しましたが、最後のリダイレクトは発生しません。www.google.comへの最後のリクエストは200です。しかし、接続を試みたことはありませんfrom every countryなので、元の質問はそのままです。

28
Michal Charemza

残念ながら、これを回避する方法は多くありません。リソースは、CSPがアクティブなときに、ホワイトリスト(このようなリモートリソースの場合)またはインライントリック(つまり、nonceまたはsha256-...)を必要とします。ただし、結局のところ、CSPはおそらくサイトをより安全にし、ほとんどのリソースを保護することができます。

ただし、何をしようとしているかによっては、目標を達成できる場合があります。

ここにいくつかのオプションがあります:

  1. すべての画像をホワイトリストに登録します。

    もちろん、"*"ディレクティブにimg-srcを配置するだけでもかまいませんが、CSPによる画像の保護が無効になるため、すでに知っていて、使用しないことを選択していると思います。

  2. 代替手段で画像をロードします。

    画像をロックダウンするだけで、XMLHttpRequestをあまり気にしない場合は、POSTまたは<script>を使用してピクセルをロードできます。カスタムtype付きのタグ( AdWordsイメージタグ トラッキングメソッドを使用)。これは、Googleが分析の目的でHTTPリクエスト/レスポンス(およびリダイレクト)サイクルを完了するのにブラウザーのみを必要とするという事実を利用しており、結果として1x1透明ピクセルである結果のコンテンツを解析または実行する必要はありません。 。これにより、img-srcディレクティブをロックダウンすることができ(それが本当に目的の場合)、Googleがリダイレクトに使用するドメインを許可することができます。

    これは問題を解決するだけですが、主な脅威が悪意のある画像である場合に役立ちます。

  3. すべてのGoogleドメインをimg-srcに配置します。

    以下に示すように。ヘッダーの長さwillは問題であり(仕様で大丈夫だと言っても、実装者は常にそれほど寛大ではない)、さらに重要なことに、Googleがドメインのリストを変更すると、誤ったエラーが発生する可能性があります。確かに公開されていない、または簡単に気付かないアクションです(広告のコンバージョンが発生しないことを除けば!)。私はあなたの仕事を想像していますis n'tそのリストを絶えず更新するので、おそらくこのオプションを使いたくないでしょう。

  4. 数か月間失敗を報告し、それを使って転がしてください。

    CSPはURIとContent-Security-Policy-Report-Onlyバリアントのレポートをサポートしているため、レポート専用モードでロールアウトして、レポートが表示されるのを待つことができます。 、これは良いオプションです。これらのレポートがドメインのリストで安定していることを確認したら、通常のCSPヘッダーに封印します。必要に応じて、最終的なヘッダーにレポートURIを配置して、追加の失敗をキャッチできます。もちろん、この戦略の欠点は、レポートのみのモードでは保護されないことであり、それを強制に切り替えると、失敗により変換データが失われ、追いつきが発生します。

  5. リバースプロキシを使用した静的ピクセル

    はい。さて、上記のオプションがあまり良くない(私はそれを認めます)ので、箱から出して考える時間です。ここでの問題は、Google(シャーディング/ジオピニングドメイン)によって適用されるHTTP最適化手法が、優れたセキュリティ慣行(つまり、CSP)と矛盾することです。ドメインのあいまいさの根本的な原因は、クライアントの地理的な場所です。

独自のHTTPサーバーを高度に制御している場合、静的ピクセルアプローチを使用して、次のようにリクエストを追跡し、プロキシすることができます。

User ---> GET http://your-page/

User <--- <html>...
          pixel: http://your-page/pixel?some=params

User ---> http://your-page/pixel?some=params
          ---> fetch http://googleads.g.doubleclick.net/pagead/viewthroughconversion/12345/?some=params
          <--- redirect to http://google.com, or http://google.co.uk
User <--- return redirect

静的ピクセル を使用し(アプローチ#2のように)、たとえば米国または英国にプロキシを配置すると、ソースIPが地理的にそこに固定され、Googleのエニーキャストフロントエンドが安定した場所にルーティングされるようになります終点。ユーザーとGoogleの間にプロキシを配置すると、必要に応じてリダイレクトを強制的に書き換える機会も得られます。

プロキシ設定を簡略化する(そしてパフォーマンスのスパイスを追加する)ために、自分で構築する代わりに、 Fastly with Origin Shielding のようなものを選択できます。そこからDoubleClickバックエンドとプロキシを追加すると、CDNからの元のリクエストを特定の地域からのみ送信されるように固定できます。どちらの方法でも、ユーザーには安定したリダイレクトのセットが表示され、Googleドメインのリストをimg-src 'self' *.google.com *.doubleclick.net *.googleadservices.netだけに減らすことができます。

編集: Fastly(および 他のCDNプロバイダーの増加するリストGoogle Cloudと直接ピアリングする Point-of-Presence。プロキシトラフィック用にGoogleのネットワークへの最適化されたパスを提供します。

14
sgammon

Img-srcをロックダウンして何を達成しようとしていますか?

CSPは優れたセキュリティオプションですが、ほとんどの問題はJavaScript(あらゆる種類の問題を引き起こす可能性があります)、CSS(挿入されたコンテンツの要素を非表示にしたり、要素を過度に使用したりできます)、またはフレーミングオプション(クリックジャッキングに使用できます)にあります同様に上にあるコンテンツ)。画像ははるかに小さなリスク私見です。

画像の読み込みに関して私が考えることができるセキュリティ上のリスクはほとんどありません。

  1. 追跡とそのプライバシーへの影響。あなたはすでに非常に追跡するGoogle Adwordsを使用していますが。そして、これを気にする人は通常、ブラウザでそれをブロックします。

  2. 安全でないコンテンツの読み込み(HTTPSを排他的に使用している、またはこの会話全体が少し無意味であると思いますか?)これは、img-srcのhttpsだけという、より緩やかなCSPポリシーで修正できます。

  3. 画像をロードし、その後、その不正な画像でWebサイトの一部を覆います。ただし、これにはJavaScriptやCSSインジェクションも必要です。これらはCSPでロックダウンする必要があります。

最終的には、XSSの脆弱性がない限り、画像をページに簡単に読み込むことはできません。たとえそれができても、リスクは小さいと思います。

そのため、「img-src 'self' https :;」だけにしたくなるでしょう。他の人が提案した他の回避策を試してみるのではなく、それらにはすべてマイナス面があり、将来の証拠にはなりません。

最終的に、画像のロックダウンが優先事項であるというサイトのセキュリティについて懸念がある場合は、Google Adwordsを実行する必要があるかどうか疑問に思います。

ただし、保護しようとしている特定の脅威があり、同時にAdwordsを許可している場合は、その詳細を提供し、他の方法がある可能性があります。現在、特定の問題の解決策を求めていますが、求めているもの以外の解決策があるかもしれない実際の根本的な問題を必ずしも説明する必要はありません。

11
Barry Pollard

ウィキペディアの Googleドメインのリスト を使用できます。 Google Adwordsに関係のないドメインはたくさんありますが、youtube.comのようなドメインを許可すると問題が発生するとは思いません。

現在のリストは次のとおりです。

google.com
google.ac
google.ad
google.ae
google.com.af
google.com.ag
google.com.ai
google.al
google.am
google.co.ao
google.com.ar
google.as
google.at
google.com.au
google.az
google.ba
google.com.bd
google.be
google.bf
google.bg
google.com.bh
google.bi
google.bj
google.com.bn
google.com.bo
google.com.br
google.bs
google.bt
google.co.bw
google.by
google.com.bz
google.ca
google.com.kh
google.cc
google.cd
google.cf
google.cat
google.cg
google.ch
google.ci
google.co.ck
google.cl
google.cm
google.cn
g.cn
google.com.co
google.co.cr
google.com.cu
google.cv
google.com.cy
google.cz
google.de
google.dj
google.dk
google.dm
google.com.do
google.dz
google.com.ec
google.ee
google.com.eg
google.es
google.com.et
google.fi
google.com.fj
google.fm
google.fr
google.ga
google.ge
google.gf
google.gg
google.com.gh
google.com.gi
google.gl
google.gm
google.gp
google.gr
google.com.gt
google.gy
google.com.hk
google.hn
google.hr
google.ht
google.hu
google.co.id
google.iq
google.ie
google.co.il
google.im
google.co.in
google.io
google.is
google.it
google.je
google.com.jm
google.jo
google.co.jp
google.co.ke
google.ki
google.kg
google.co.kr
google.com.kw
google.kz
google.la
google.com.lb
google.com.lc
google.li
google.lk
google.co.ls
google.lt
google.lu
google.lv
google.com.ly
google.co.ma
google.md
google.me
google.mg
google.mk
google.ml
google.com.mm
google.mn
google.ms
google.com.mt
google.mu
google.mv
google.mw
google.com.mx
google.com.my
google.co.mz
google.com.na
google.ne
google.com.nf
google.com.ng
google.com.ni
google.nl
google.no
google.com.np
google.nr
google.nu
google.co.nz
google.com.om
google.com.pk
google.com.pa
google.com.pe
google.com.ph
google.pl
google.com.pg
google.pn
google.co.pn
google.com.pr
google.ps
google.pt
google.com.py
google.com.qa
google.ro
google.rs
google.ru
google.rw
google.com.sa
google.com.sb
google.sc
google.se
google.com.sg
google.sh
google.si
google.sk
google.com.sl
google.sn
google.sm
google.so
google.st
google.sr
google.com.sv
google.td
google.tg
google.co.th
google.com.tj
google.tk
google.tl
google.tm
google.to
google.tn
google.com.tr
google.tt
google.com.tw
google.co.tz
google.com.ua
google.co.ug
google.co.uk
google.com
google.com.uy
google.co.uz
google.com.vc
google.co.ve
google.vg
google.co.vi
google.com.vn
google.vu
google.ws
google.co.za
google.co.zm
google.co.zw
admob.com
adsense.com
adwords.com
Android.com
blogger.com
blogspot.com
chromium.org
chrome.com
chromebook.com
cobrasearch.com
googlemember.com
googlemembers.com
com.google
feedburner.com
doubleclick.com
igoogle.com
foofle.com
froogle.com
googleanalytics.com
google-analytics.com
googlecode.com
googlesource.com
googledrive.com
googlearth.com
googleearth.com
googlemaps.com
googlepagecreator.com
googlescholar.com
gmail.com
googlemail.com
keyhole.com
madewithcode.com
panoramio.com
picasa.com
sketchup.com
Urchin.com
waze.com
youtube.com
youtu.be
yt.be
ytimg.com
youtubeeducation.com
youtube-nocookie.com
like.com
google.org
google.net
466453.com
gooogle.com
gogle.com
ggoogle.com
gogole.com
goolge.com
googel.com
duck.com
googlee.com
googil.com
googlr.com
googl.com
gmodules.com
googleadservices.com
googleapps.com
googleapis.com
goo.gl
googlebot.com
googlecommerce.com
googlesyndication.com
g.co
whatbrowser.org
localhost.com
withgoogle.com
ggpht.com
youtubegaming.com

ただし、それが本当にすべてのドメインであるかどうかを確認したい場合は、Googleに直接問い合わせてください。