Kebijakan Keamanan Konten (CSP) adalah cara untuk mengamankan halaman web Anda dengan membatasi resource dan skrip yang diizinkan untuk dimuat dan dijalankan. Anda dapat mengaktifkan CSP dengan menetapkan header Content-Security-Policy
dalam
respons HTTP dari server web Anda.
Ada dua cara standar untuk mengonfigurasi CSP:
Tentukan daftar domain yang diizinkan untuk memasukkan resource-nya di halaman.
Tentukan nonce acak, yang harus ditandai dengan resource di halaman agar dapat dimuat. Pendekatan ini dikenal sebagai CSP ketat.
Karena domain yang digunakan Tag Google Publisher (GPT) berubah dari waktu ke waktu, kami hanya mendukung CSP ketat (opsi 2). Dengan pendekatan ini, Anda tidak perlu mengelola daftar domain yang terus diperbarui yang mungkin sudah tidak berlaku dan merusak situs Anda.
Menyiapkan CSP dengan GPT
Aktifkan CSP di server web Anda.
Ikuti langkah-langkah yang diuraikan dalam menggunakan CSP ketat untuk menyiapkan header CSP dan menerapkan nonce ke setiap tag skrip di halaman Anda, termasuk
gpt.js
. GPT secara khusus mendukung perintah CSP berikut:Content-Security-Policy: object-src 'none'; script-src 'nonce-{random}' 'unsafe-inline' 'unsafe-eval' 'strict-dynamic' https: http:; base-uri 'none'; report-uri https://your-report-collector.example.com/
Anda dapat memilih kebijakan yang lebih permisif jika sesuai dengan kasus penggunaan Anda. Kebijakan yang lebih ketat dapat rusak tanpa pemberitahuan.
Aktifkan rendering lintas-domain.
Iframe iklan dapat memuat resource eksternal yang mungkin tidak diizinkan oleh CSP. Karena iframe domain yang sama mewarisi CSP jendela tingkat teratas, dan GPT tidak dapat mengontrol konten materi iklan, materi iklan domain yang sama umumnya tidak akan berfungsi dengan benar dengan header CSP.
Untuk mengaktifkan rendering lintas-domain untuk semua materi iklan, jalankan
googletag.pubads().setForceSafeFrame(true)
sebelum memuat slot iklan apa pun.<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Hello GPT</title>
<script src="https://securepubads.g.doubleclick.net/tag/js/gpt.js" nonce="KC7tcz53FHqumKP1" async></script>
<script nonce="KC7tcz53FHqumKP1">
window.googletag = window.googletag || {cmd: []};
googletag.cmd.push(function() {
googletag.pubads().setForceSafeFrame(true);
});
</script>
</head>
Pengujian
Sebaiknya uji kebijakan Anda terlebih dahulu dengan menetapkan header
Content-Security-Policy-Report-Only
, bukan
Content-Security-Policy
. Header melaporkan pelanggaran, tetapi tetap mengizinkannya
di halaman.