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

  • Xslt, javascript и unescaped html-объекты
  • Значение «this» внутри обработчика с помощью addEventListener
  • JSON.Stringify не работает в Scripting.Dictionary objects
  • Где JavaScript получает новую Date () из
  • Ионное получение текстового поля
  • JQuery получить максимальную ширину дочернего div
  • Библиотека Javascript: обфускать или не запутывать - вот вопрос
  • Какой лучший плагин масштабирования продукта jQuery?
  • 3 Solutions collect form web for “Google Adwords CSP (политика безопасности содержимого) img-src”

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

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

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

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

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

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

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

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

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

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

    4. Сообщите о сбоях в течение нескольких месяцев, а затем просмотрите их.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    JavaScript делает сайт умным, красочным и простым использованием.