İçerik Güvenliği Politikası ile Entegrasyon

İç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:

  1. Kaynaklarını sayfaya ekleyebilen alanların izin verilenler listesini belirtin.

  2. 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

  1. 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.

  2. 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.