Menggunakan Tag Manager dengan Kebijakan Keamanan Konten

Kebijakan Keamanan Konten (CSP) adalah standar keamanan Web yang didukung luas yang dimaksudkan untuk mencegah jenis serangan berbasis injeksi tertentu dengan memberi developer kontrol atas resource yang dimuat oleh aplikasi mereka. Gunakan panduan ini untuk memahami cara men-deploy Google Tag Manager di situs yang menggunakan CSP.

Mengaktifkan tag penampung untuk menggunakan CSP

Untuk menggunakan Google Tag Manager di halaman dengan CSP, CSP harus memungkinkan eksekusi kode penampung Tag Manager Anda. Kode ini dibuat sebagai kode JavaScript inline yang memasukkan skrip gtm.js. Ada beberapa cara untuk melakukannya, seperti penggunaan nonce atau hash. Metode yang direkomendasikan adalah menggunakan nonce, yang harus berupa nilai acak yang tidak dapat diprediksi, yang dihasilkan server satu per satu untuk setiap respons. Berikan nilai nonce di perintah script-src Kebijakan Keamanan Konten:

Content-Security-Policy: script-src 'nonce-{SERVER-GENERATED-NONCE}'; img-src www.googletagmanager.com

Kemudian, gunakan versi berbasis nonce dari kode penampung Tag Manager inline. Tetapkan atribut nonce di elemen skrip inline ke nilai yang sama:

<!-- 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 -->

Tag Manager kemudian akan menyebarkan nonce ke skrip apa pun yang ditambahkannya ke halaman.

Ada cara lain untuk mengaktifkan eksekusi skrip inline, seperti menyediakan hash skrip inline dalam CSP.

Jika tidak dapat menggunakan nonce atau hash yang direkomendasikan, skrip inline Tag Manager dapat diaktifkan dengan menambahkan perintah 'unsafe-inline' ke bagian script-src CSP.

Perintah berikut diperlukan dalam CSP untuk menggunakan pendekatan ini:

script-src: 'unsafe-inline' https://www.googletagmanager.com
img-src: www.googletagmanager.com

Variabel JavaScript Kustom

Karena cara penerapan Variabel JavaScript Kustom, variabel ini akan dievaluasi ke undefined jika ada CSP, kecuali jika perintah 'unsafe-eval' diberikan di bagian script-src pada CSP.

script-src: 'unsafe-eval'

Mode Pratinjau

Untuk menggunakan Mode Pratinjau Google Tag Manager, CSP harus menyertakan perintah berikut:

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 Analytics 4 (Google Analytics)

Untuk menggunakan tag Google Analytics 4 (Google Analytics), CSP harus menyertakan perintah berikut:

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

Untuk deployment Google Analytics 4 (Google Analytics) yang menggunakan sinyal Google, CSP harus menyertakan perintah berikut:

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 Analytics)

Untuk menggunakan tag Universal Analytics (Google Analytics), CSP harus menyertakan perintah berikut:

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

Untuk menggunakan tag konversi Google Ads, CSP harus menyertakan perintah berikut:

Untuk koneksi aman:

script-src: https://www.googleadservices.com https://www.google.com
img-src: https://googleads.g.doubleclick.net https://www.google.com https://google.com

Untuk koneksi tidak aman:

script-src: www.googleadservices.com www.google.com
img-src: googleads.g.doubleclick.net www.google.com google.com

Untuk menggunakan tag pemasaran ulang Google Ads, CSP harus menyertakan perintah berikut.

Untuk koneksi aman:

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

Untuk koneksi tidak aman:

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

Pengguna Floodlight dapat mengaktifkan CSP menggunakan konfigurasi berikut. Ganti nilai <FLOODLIGHT-CONFIG-ID> dengan ID pengiklan Floodlight tertentu, atau * untuk mengizinkan ID pengiklan apa pun:

Untuk semua pengguna:

img-src: https://<FLOODLIGHT-CONFIG-ID>.fls.doubleclick.net

Untuk beacon "skrip kustom" di Tag Manager:

frame-src: https://<FLOODLIGHT-CONFIG-ID>.fls.doubleclick.net

Untuk tag gambar:

img-src: https://ad.doubleclick.net

Untuk mode izin:

img-src: https://ade.googlesyndication.com