İçerik Güvenliği Politikası (İGP), hangi kaynakların ve komut dosyalarının yüklenmesine ve yürütülmesine izin verildiğini sınırlayarak web sayfanızı güvence altına almanızı sağlar. Web sunucunuzdan gelen HTTP yanıtlarında bir Content-Security-Policy
üstbilgisi ayarlayarak CSP'yi etkinleştirebilirsiniz.
CSP'yi yapılandırmanın iki standart yolu vardır:
Kaynaklarını sayfaya ekleyebilen alanların izin verilenler listesini belirtin.
Sayfadaki kaynakların yüklenmesi için işaretlenmesi gereken rastgele bir tek seferlik sayı belirtin. Bu yaklaşıma katı CSP denir.
Google Yayıncı Etiketi'nin (GPT) kullandığı alanlar zaman içinde değiştiğinden yalnızca katı CSP'yi (2. seçenek) destekleriz. Bu yaklaşım, güncelliğini yitirebilecek ve sitenizi bozabilecek alanların yer aldığı bir liste tutma ihtiyacını ortadan kaldırır.
GPT ile CSP'yi ayarlama
Web sunucunuzda CSP'yi etkinleştirin.
CSP başlığını ayarlamak ve
gpt.js
dahil olmak üzere sayfanızdaki her komut dosyası etiketine tek seferlik rastgele sayıyı uygulamak için Katı CSP'yi kullanmaya başlama bölümünde açıklanan adımları uygulayın. GPT, özellikle aşağıdaki CSP yönergelerini destekler: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/
Kullanım alanınıza uygunsa daha izin verici bir politika seçebilirsiniz. Daha kısıtlayıcı politikalar önceden haber verilmeksizin devre dışı bırakılabilir.
Alanlar arası oluşturmayı etkinleştirin.
Reklam iFrame'leri, CSP tarafından izin verilmeyen harici kaynakları yükleyebilir. Aynı alan adındaki iframe'ler üst düzey pencerenin CSP'sini devraldığı ve GPT reklam öğesinin içeriğini kontrol edemediği için aynı alan adındaki reklam öğeleri genellikle CSP üstbilgileriyle düzgün çalışmaz.
Tüm reklam öğeleri için alan adı genelinde oluşturmayı etkinleştirmek istiyorsanız reklam alanları yüklemeden önce
googletag.pubads().setForceSafeFrame(true)
'i yürütün.<!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>
Test
Öncelikle Content-Security-Policy
yerine Content-Security-Policy-Report-Only
başlığını ayarlayarak politikalarınızı test etmenizi öneririz. Başlıkta ihlaller bildiriliyor ancak sayfaya yine de izin veriliyor.