Content-Security-Policy (CSP) nedir?
Kısa cevap
Content-Security-Policy (CSP), sayfanın hangi kaynaklardan script, stil, görsel, yazı tipi ve frame yükleyebileceğini tarayıcıya bildiren yanıt header'ıdır; izin verilmeyen kaynaktan gelen içerik tarayıcı tarafından yüklenmez ya da çalıştırılmaz. Böylece XSS ile sayfaya enjekte edilen script'lerin çalışması büyük ölçüde engellenir. TR7'de Manage HTTP Security Headers aksiyonunun Response Headers listesinde Content-Security-Policy ("default-src 'self'" ) seçildiğinde header default-src 'self'; değeriyle Kurum Servisinden gelen yanıtlara yazılır; bu değer yalnızca sayfanın kendi origin'inden gelen kaynaklara izin verir ve inline script'leri de engeller. Değer sabittir; farklı bir politika gerekiyorsa header Set HTTP Header aksiyonuyla yanıt aşamasında yazılır.
TR7'de Nerede Kullanılır
| Nerede | Alan / etiket | Ne için |
|---|---|---|
| Load Balancer → Actions (Policy Actions) → Manage HTTP Security Headers formu | Response Headers → Content-Security-Policy ("default-src 'self'" ) | Sabit default-src 'self'; politikasını yanıta yazma |
| Load Balancer → Actions (Policy Actions) → Set HTTP Header formu | Set HTTP Header | Uygulamaya özel bir CSP değerini yanıt aşamasında yazma |
Nasıl Çalışır?
CSP, directive'lerden oluşur; her directive bir kaynak türü için izinli kaynakları listeler (W3C Content Security Policy Level 3):
| Directive | Neyi denetler |
|---|---|
default-src | Ayrı directive'i yazılmamış kaynak türleri (script, stil, görsel, yazı tipi, frame, bağlantı…) için varsayılan liste; frame-ancestors gibi kaynak yüklemeyle ilgili olmayan directive'lerin yerine geçmez |
script-src, style-src, img-src, font-src | Script, stil, görsel ve yazı tipi kaynakları |
frame-ancestors | Sayfanın hangi sayfalarda iframe içinde gösterilebileceği |
TR7'nin yazdığı default-src 'self' tek directive'dir: bütün kaynak türleri yalnızca aynı origin'den yüklenir (sayfanın iframe içinde gösterilmesini denetlemez; bunun için X-Frame-Options nedir?); 'unsafe-inline' yazılmadığı için sayfa içine gömülü script ve stiller de çalışmaz. Header yalnızca Kurum Servisinden gelen yanıtlara eklenir; TR7'nin kendi ürettiği yanıtlar (engelleme ve hata sayfaları) bu header'ı almaz.
Sık Karıştırılan Noktalar
- "CSP eklemek uygulamayı etkilemez."
default-src 'self'dış CDN'den, analiz servisinden ya da inline script'ten gelen içeriği engeller; değişiklik önce test ortamında denenir. - "CSP WAF'ın yerini tutar." CSP tarayıcı tarafında çalışır; sunucuya gelen saldırıları engellemez, bunun için WAF kullanılır.
- "Kurum Servisi CSP gönderiyorsa TR7 ikinci bir CSP ekler." Manage HTTP Security Headers, Kurum Servisinin Content-Security-Policy değerini siler ve kendi değerini yazar (mevcut başlıkların üzerine yazılması).
Dokümantasyonda nasıl yapılır
