Content Security Policy ve CMP'niz: CSP ile Onayı Birlikte Çalıştırmak

Uyum Sağlaması Gereken İki Güvenlik Katmanı

Bir Content Security Policy (CSP), tarayıcıya bir sayfanın betikleri, stilleri, görselleri, çerçeveleri ve ağ isteklerini hangi kaynaklardan yükleyebileceğini söyler. Bir onay yönetim platformu ise tam tersi bir iş yapar: kullanıcının tercihine göre bu betiklerden hangilerinin çalışmasına izin verildiğine karar verir. İkisi ayrı ayrı yapılandırıldığında çatışırlar. CSP engellediği için CMP yüklenemez ya da CSP, CMP'yi ve reklam etiketlerini barındırmak için o kadar gevşetilir ki artık hiçbir şeyi korumaz.

Bu rehber, bir CMP'nin tipik olarak hangi CSP yönergelerine ihtiyaç duyduğunu, nonce'ların betik enjeksiyonuyla nasıl etkileşime girdiğini ve banner'ınızı bozmadan değişikliklerin nasıl devreye alınacağını açıklar.

Bir CMP'nin CSP'den Genellikle İhtiyacı Olanlar

Kesin gereksinimler satıcıya göre değişir; bu nedenle her zaman CMP'nizin kendi belgelerinden başlayın. Genel olarak şu yönergeleri kontrol edin:

TCF siteleri için CMP'nin sayfada __tcfapiLocator adlı bir bulucu çerçeve de oluşturduğunu unutmayın. Bu çerçeve uzak bir kaynak olmadan oluşturulur; bu yüzden normalde bir frame-src girdisi gerektirmez, ancak testlerde doğrulamaya değer.

Satır İçi Stub Sorunu

Çoğu CMP, diğer betiklerin ana CMP yüklenmeden önce çağrıları kuyruğa alabilmesi için sayfa başlığına küçük bir satır içi betik — stub — yerleştirmenizi ister. Sıkı bir CSP, açıkça izin vermediğiniz sürece satır içi betikleri engeller. Üç seçeneğiniz vardır:

  1. Bir nonce. Yanıt başına rastgele bir değer üretin, bunu CSP başlığına 'nonce-...' olarak ve stub'ın <script> etiketine ekleyin. Dinamik sayfalar için en esnek seçenektir.
  2. Bir hash. Stub'ın tam içeriğinin SHA-256 hash'ini script-src içine ekleyin. Statik siteler için iyi çalışır, ancak stub'daki herhangi bir değişiklik, bir boşluk bile, bunu bozar.
  3. Stub'ı kendi alan adınızda harici bir dosya olarak barındırmak ve 'self' ile kapsamak. Yeterince erken yüklenmesini sağlamak özen gerektirir.

Kestirme yol olarak 'unsafe-inline' kullanmaktan kaçının. Her satır içi betiğe izin verir ve bu, CSP'nin sağladığı korumanın büyük kısmını ortadan kaldırır.

Nonce'lar ve CMP'nin Enjekte Ettiği Betikler

Onaya kadar betikleri engelleyen bir CMP, çoğu zaman onları geri tutup sonra enjekte ederek çalışır. Nonce tabanlı bir CSP altında bu enjekte edilen betiklere de izin verilmesi gerekir. Yaygın iki yaklaşım vardır:

Etiket yöneticileri aynı soruyu gündeme getirir. Reklam ve analitik etiketlerini bir etiket yöneticisi aracılığıyla yüklüyorsanız, nonce'larla ilgili belgelerini izleyin ve CMP ile etiket yöneticisinin tutarlı bir yaklaşım kullandığından emin olun.

Reklam Etiketleri CSP'yi Zorlaştırır

Programatik reklamcılık birçok alan adından betik ve çerçeve yükler ve liste talep ortakları değiştikçe değişir. Yayıncılar genellikle iki seçimden birini yapar:

Hangisi olursa olsun, bir CSP değişikliğinin banner'ı sessizce devre dışı bırakmaması için CMP yalnızca bir joker karakterle değil, açık izin listesinde yer almalıdır.

Report-Only Modu ile Devreye Alın

Önce Content-Security-Policy-Report-Only başlığını kullanın. Tarayıcı hiçbir şeyi engellemeden ihlalleri raporlar; böylece yeni bir politikanın neyi bozacağını görebilirsiniz.

  1. Politikayı bir raporlama uç noktasıyla report-only modunda yayına alın.
  2. Sayfaları temiz tarayıcı profillerinde yükleyin ve tüm onay akışından geçin: ilk ziyaret, hepsini kabul et, hepsini reddet, özel seçim, geri çekme.
  3. İhlal raporlarını ve tarayıcı konsolunu engellenen CMP kaynakları için inceleyin.
  4. Politikayı ayarlayın, ardından uygulamaya geçin.
  5. Gerilemeleri yakalamak için uygulamadan sonra da raporlamayı açık tutun.

CSP Çakışmasının Belirtileri

Önemli Çıkarımlar

← Blog Tümünü Oku →