Подтвердить что ты не робот

Google Adwords CSP (политика безопасности содержимого) img-src

Какие домены/протоколы в директиве img-src заголовка Content-Security-Policy необходимы для отслеживания конверсий Google AdWords?

Из тестирования, когда мы вызываем google_trackConversion, похоже, что браузер создает изображение с src, которое следует цепочке из 302 переадресаций между различными доменами...

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

и повторение преобразования второй раз, компонент пути первого запроса

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. Однако я, очевидно, не пробовал связанных с каждой страной, поэтому мой первоначальный вопрос стоит.

4b9b3361

Ответ 1

К сожалению, этого не так много. Ресурсы требуют либо белого списка (в случае удаленных ресурсов, как этот), либо инкрустирующих трюков (т.е. nonce или sha256-...), когда CSP активен. В конце концов, CSP, вероятно, может сделать ваш сайт более безопасным и защитить большинство ресурсов.

В зависимости от того, что вы пытаетесь сделать, вы все равно сможете достичь своей цели.

Вот несколько вариантов:

  • Белый список всех изображений.

    Конечно, вы могли бы просто поместить "*" в свою директиву img-src, но я думаю, вы уже знаете это и выбираете не потому, что он побеждает защиту CSP для изображений.

  • Загрузите изображение с помощью альтернативных средств.

    Если все, что вам нужно, специально блокирует изображения и, скажем, не заботится о XMLHttpRequest, вы можете загрузить пиксель через POST или даже через тег <script> с помощью настраиваемого type (используя метод отслеживания тегов изображений AdWords). Это использует тот факт, что Google нуждается только в браузере для завершения цикла HTTP-запроса/ответа (и перенаправления) для целей аналитики, и вам все равно не нужно разбираться или выполнять полученный контент, который является прозрачным пикселем 1x1 в любом случае, Это позволяет заблокировать вашу директиву img-src (если это действительно ваша цель), но при этом разрешить любой домен, который Google хотел бы использовать для перенаправления.

    Я знаю, что это только перемещает вашу проблему, но это полезно, если ваша главная угроза - это вредоносные изображения.

  • Поместите все домены Google в img-src.

    Как показано ниже. Длина заголовков будет проблемой (даже если спецификации говорят, что все в порядке, разработчики не всегда такие щедрые), и что более важно, вы можете столкнуться с ложными сбоями, поскольку Google изменяет список своих доменов, что, конечно же, не является публичным или легко (помимо конверсий объявлений, которые не проходят)! Поскольку я предполагаю, что ваша задача не обновлять этот список постоянно, вы, вероятно, не захотите использовать эту опцию.

  • Откажитесь от сбоев в течение нескольких месяцев, а затем просмотрите их.

    Поскольку CSP поддерживает отчет URI и вариант Content-Security-Policy-Report-Only, вы можете вывести его в режиме только для отчетов и дождаться появления отчетов. Если у вас уже есть хорошие данные о вашей пользовательской базе (и она не сильно меняется), это может быть хорошим вариантом - как только вы увидите, что эти отчеты стабилизируются в списке доменов, запечатайте их в обычном заголовке CSP. При желании вы можете разместить URI отчетности в конечном заголовке, чтобы поймать любые дополнительные сбои. Недостатком этой стратегии, конечно же, является то, что вы не получаете защиты в режиме только для отчетов, а когда вы переключаетесь на принудительное выполнение, сбои вызывают потерянные данные преобразования, и вы играете догоняете.

  • Статический пиксель с обратным прокси

    Хорошо. Ну, с вышеперечисленными вариантами, которые не так велики (я признаю это), пришло время подумать нестандартно. Проблема здесь в том, что методы оптимизации HTTP, применяемые Google (осколки/геопринтинговые домены), противоречат хорошей практике безопасности (т.е. 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 anycast должен перенаправить вас на стабильную конечную точку. Размещение прокси между пользователем и Google также дает вам возможность принудительно переписать перенаправление, если вы хотите.

Чтобы упростить настройку прокси-сервера (и добавить некоторую производительность), вы можете выбрать что-то вроде Fastly с Происхождение Экранирование вместо того, чтобы строить его самостоятельно. Если вы добавите бэкэнд и прокси-сервер DoubleClick оттуда, вы можете вывести исходящие запросы из CDN только из определенного географического региона. В любом случае ваш пользователь должен увидеть стабильный набор переадресаций, и вы можете обрезать этот список доменов Google только на img-src 'self' *.google.com *.doubleclick.net *.googleadservices.net.

Изменить: Также стоит отметить, что Fastly (и растущий список других поставщиков CDN) прямо с Google Облаков нескольких своих точках присутствия, предлагая оптимизированный путь в сети Google для вашего прокси-трафика.

Ответ 2

Чего вы пытаетесь добиться, заблокировав свой img-src?

CSP - отличный вариант безопасности, но большинство проблем связано с javascript (который может вызывать всевозможные проблемы), css (который может использоваться для скрытия или чрезмерного использования элементов с вложенным контентом) или параметры кадрирования (которые можно использовать для кликов - использование аналогичного избыточного контента). Изображения представляют собой гораздо меньший риск ИМХО.

Есть несколько угроз безопасности, с которыми я могу думать при загрузке изображений, которые сводятся к:

  • Отслеживание и последствия для конфиденциальности. Хотя вы уже используете Google Adwords, который так много отслеживает. И те, кто заботится об этом, обычно блокируют его в своем браузере.

  • Загрузка небезопасного контента (я полагаю, вы используете HTTPS исключительно или весь этот разговор немного бессмыслен?). Это может быть исправлено с помощью более свободной политики CSP только для https для img-src.

  • Загрузка изображения и последующей частички вашего сайта с помощью этого изображения-изгоев. Но для этого требуется также javascript и/или CSS-инъекция, которые должны быть заблокированы в CSP.

В конечном счете, если у вас нет уязвимости XSS, люди не могут легко загружать изображения на ваши страницы. И даже если бы они могли подумать, что риски небольшие.

Итак, у меня возникнет соблазн просто иметь "img-src" self 'https:; " вместо того, чтобы попробовать любую другую работу, которую предложили другие, - все из которых имеют недостатки и не очень надежны в будущем.

В конечном счете, если вы обеспокоены безопасностью своего сайта, что блокирование изображений является высоким приоритетом, я бы поставил под вопрос, следует ли запускать Google Adwords.

Однако, если существует определенная угроза, которую вы пытаетесь защитить от нее, и в то же время разрешаете использовать Adwords, тогда предоставьте подробную информацию об этом, и там могут быть другие способы. На данный момент вы попросили решение конкретной проблемы, не обязательно объясняя фактическую основную проблему, которая может иметь решения, отличные от того, о котором вы просите.

Ответ 3

Вы можете использовать Wikipedia Список доменов 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.