Content Security Policy (CSP) – это широко поддерживаемый стандарт веб-безопасности. Он позволяет разработчикам выбирать, какие ресурсы могут загружаться приложениями, и тем самым предотвращать определенные типы атак с внедрением кода. В этом руководстве объясняется, как использовать Google Менеджер тегов на сайте с CSP.
Настройка тега-контейнера для работы с CSP
Чтобы использовать Google Менеджер тегов на странице с CSP, разрешите выполнение кода-контейнера Менеджера тегов, который является встроенным кодом JavaScript и внедряет скрипт gtm.js
. Это можно сделать несколькими способами, например с помощью однократно используемого числа (nonce) или хеша. Рекомендуем использовать значение nonce – случайное число, которое сервер генерирует отдельно для каждого ответа. Укажите значение nonce в директиве CSP script-src
:
Content-Security-Policy: script-src 'nonce-{SERVER-GENERATED-NONCE}'; img-src www.googletagmanager.com
Затем используйте версию встроенного кода Google Менеджера тегов с поддержкой числа nonce и укажите то же значение для атрибута nonce во встроенном элементе скрипта.
<!-- Google Tag Manager -->
<script nonce='{SERVER-GENERATED-NONCE}'>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;var n=d.querySelector('[nonce]');
n&&j.setAttribute('nonce',n.nonce||n.getAttribute('nonce'));f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-XXXXXX');</script>
<!-- End Google Tag Manager -->
Тогда число nonce будут содержать все скрипты, добавляемые Менеджером тегов на страницу.
Разрешить выполнение встроенного скрипта можно и другими способами, например добавив хеш встроенного скрипта в CSP.
Если эти рекомендуемые способы не подходят, вы можете разрешить выполнение встроенного скрипта Менеджера тегов, добавив директиву 'unsafe-inline'
в раздел script-src
CSP.
Чтобы воспользоваться этим способом, добавьте в CSP такие директивы:
script-src: 'unsafe-inline' https://www.googletagmanager.com
img-src: www.googletagmanager.com
Пользовательские переменные JavaScript
Пользовательские переменные JavaScript будут иметь значение undefined
, если в разделе script-src
CSP не указана директива 'unsafe-eval'
. Это связано с особенностями реализации таких переменных.
script-src: 'unsafe-eval'
Режим предварительного просмотра
Чтобы использовать режим предварительного просмотра Google Менеджера тегов, необходимо включить в правила защиты контента следующие директивы:
script-src: https://googletagmanager.com https://tagmanager.google.com
style-src: https://googletagmanager.com https://tagmanager.google.com https://fonts.googleapis.com
img-src: https://googletagmanager.com https://ssl.gstatic.com https://www.gstatic.com
font-src: https://fonts.gstatic.com data:
Google Аналитика 4 (Google Аналитика)
Чтобы использовать тег Google Аналитики 4 (Google Аналитики), необходимо включить в CSP следующие директивы:
script-src: https://*.googletagmanager.com
img-src: https://*.google-analytics.com https://*.googletagmanager.com
connect-src: https://*.google-analytics.com https://*.analytics.google.com https://*.googletagmanager.com
Для развертывания Google Аналитики 4 (Google Аналитики) с использованием сигналов Google необходимо включить в CSP следующие директивы:
script-src: https://*.googletagmanager.com
img-src: https://*.google-analytics.com https://*.analytics.google.com https://*.googletagmanager.com
https://*.g.doubleclick.net https://*.google.com https://*.google.<TLD>
connect-src: https://*.google-analytics.com https://*.analytics.google.com
https://*.googletagmanager.com https://*.g.doubleclick.net https://*.google.com https://*.google.<TLD>
Universal Analytics (Google Аналитика)
Чтобы использовать тег Universal Analytics (Google Аналитики), необходимо включить в CSP следующие директивы:
script-src: https://www.google-analytics.com https://ssl.google-analytics.com
img-src: https://www.google-analytics.com
connect-src: https://www.google-analytics.com
Конверсии Google Рекламы
Чтобы использовать тег конверсии Google Рекламы, необходимо включить в CSP следующие директивы:
Для защищенных подключений:
script-src: https://www.googleadservices.com https://www.google.com
img-src: https://googleads.g.doubleclick.net https://www.google.com https://google.com
Для незащищенных подключений:
script-src: www.googleadservices.com www.google.com
img-src: googleads.g.doubleclick.net www.google.com google.com
Ремаркетинг в Google Рекламе
Чтобы использовать тег ремаркетинга Google Рекламы, необходимо включить в CSP следующие директивы:
Для защищенных подключений:
script-src: https://www.googleadservices.com https://googleads.g.doubleclick.net https://www.google.com
img-src: https://www.google.com https://google.com
frame-src: https://bid.g.doubleclick.net
Для незащищенных подключений:
script-src: www.googleadservices.com googleads.g.doubleclick.net www.google.com
img-src: www.google.com google.com
frame-src: bid.g.doubleclick.net
Floodlight
Пользователи Floodlight могут включить CSP с помощью приведенных ниже конфигураций. Вместо значения <FLOODLIGHT-CONFIG-ID>
необходимо указать идентификатор рекламодателя Floodlight или символ звездочки (*
), обозначающий любой идентификатор.
Для всех пользователей:
img-src: https://<FLOODLIGHT-CONFIG-ID>.fls.doubleclick.net
Для пикселей отслеживания собственных скриптов в Менеджере тегов:
frame-src: https://<FLOODLIGHT-CONFIG-ID>.fls.doubleclick.net
Для тегов изображений:
img-src: https://ad.doubleclick.net
Для режима согласия:
img-src: https://ade.googlesyndication.com