Artikel ini menerangkan Dasar Keselamatan Kandungan (CSP) dan cara menyepadukan dasar itu dengan kod iklan AdSense anda. Harap maklum bahawa penerbit tidak perlu menggunakan CSP. Jika anda mahu menggunakan CSP, ikut langkah di bawah untuk memastikan kod AdSense anda berfungsi dengan betul apabila anda mendayakan CSP.
Apa itu CSP
Dasar Keselamatan Kandungan (CSP) ialah cara melindungi halaman web anda dengan mengehadkan sumber dan skrip yang dibenarkan untuk dimuatkan dan dilaksanakan. Anda boleh mendayakan CSP dengan menetapkan pengepala Content-Security-Policy
dalam respons HTTP daripada pelayan web anda.
Terdapat dua cara standard untuk mengkonfigurasikan CSP:
- Tentukan senarai putih domain yang boleh menyuntik sumber domain tersebut pada halaman.
- Tentukan nonce rawak, dengan sumber pada halaman yang perlu ditandakan sebelum dimuatkan. Pendekatan ini dikenali sebagai CSP ketat.
Kami hanya menyokong CSP yang ketat (pilihan 2) kerana domain yang digunakan oleh kod iklan AdSense berubah dari semasa ke semasa. Pendekatan ini tidak perlu mengekalkan senarai domain yang panjang yang mungkin menjadi lapuk dan merosakkan laman anda.
Menyediakan CSP ketat dengan kod iklan AdSense
Untuk mendayakan CSP pada pelayan web anda, ikut langkah yang digariskan dalam Gunakan CSP ketat yang menjelaskan cara menyediakan pengepala CSP dan menggunakan nonce pada setiap tag skrip pada halaman anda, termasuk kod AdSense. Kod AdSense secara khusus menyokong arahan CSP yang 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 boleh memilih dasar yang lebih longgar jika dasar tersebut sesuai dengan kes penggunaan anda. Polisi yang lebih ketat mungkin dilanggar tanpa notis.
Contoh kod
Yang berikut ialah contoh kod AdSense dengan CSP yang ketat:
<script nonce="${nonce}" async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=i-gno/re-d1234&host=ca-host-pub-5678" crossorigin="anonymous">
</script>
<ins class="adsbygoogle"
style="display:inline-block;width:728px;height:90px"
data-ad-client="i-gno/re-d1234"
data-ad-host="ca-host-pub-5678">
</ins>
<script nonce="${nonce}">
(adsbygoogle = window.adsbygoogle || []).push({});
</script>
Ujian
Kami mengesyorkan agar anda menguji dasar anda dahulu dengan menetapkan pengepala Content-Security-Policy-Report-Only
dan bukannya Content-Security-Policy
. Pengepala melaporkan pelanggaran tetapi masih membenarkan pelanggaran tersebut pada halaman.