CSP nedir?
CSP (Content Security Policy, içerik güvenliği politikası), bir web sayfasının hangi kaynaklardan betik, stil, görsel ve diğer içerikleri yükleyebileceğini tarayıcıya bildiren güvenlik başlığıdır. Temel amacı XSS gibi enjeksiyon saldırılarının etkisini sınırlamaktır.
Sunucu bir politika tanımlar; tarayıcı bu politikaya uymayan kaynakları yüklemeyi veya çalıştırmayı reddeder. Böylece sayfaya bir şekilde zararlı betik eklense bile çalışması engellenebilir.
Nasıl çalışır?
Politika Content-Security-Policy HTTP başlığıyla (veya meta etiketiyle) iletilir ve yönergelerden oluşur. Örneğin script-src betiklerin kaynağını, img-src görsellerin kaynağını, frame-ancestors sayfanın hangi sitelerde çerçevelenebileceğini belirler. default-src ise belirtilmeyen türler için varsayılandır.
Satır içi (inline) betikleri tamamen kapatıp yalnızca nonce veya hash ile işaretlenmiş olanlara izin vermek, güçlü bir CSP’nin temelidir. unsafe-inline ve unsafe-eval gibi değerler korumayı önemli ölçüde zayıflatır.
Sunucu ve hosting ortamında
Başlık Apache, Nginx veya LiteSpeed yapılandırmasında ya da doğrudan uygulama kodunda eklenebilir. Hosting panellerinde .htaccess üzerinden de tanımlanabilir. Üçüncü taraf analitik, reklam, harita ve yazı tipi hizmetleri kullanan sitelerde politikanın bu kaynakları açıkça içermesi gerekir.
CSP’yi canlıya almadan önce Content-Security-Policy-Report-Only başlığı ile deneyin. Bu mod engellemeden yalnızca ihlalleri raporlar; böylece sitenin hangi parçalarının bozulacağını görmeden önce düzeltme yapabilirsiniz.
Nasıl uygulanır?
- Önce
Report-Onlymodunda başlayın ve ihlal raporlarını inceleyin default-src 'self'gibi kısıtlayıcı bir temel ile başlayıp gerekli kaynakları tek tek ekleyin- Satır içi betikler için
unsafe-inlineyerine nonce ya da hash kullanın - Joker (
*) kaynaklardan kaçının, yalnızca ihtiyaç duyulan alan adlarına izin verin frame-ancestorsyönergesiyle clickjacking koruması ekleyin- Site değiştikçe politikayı güncelleyin ve test edin
Sık yapılan hatalar
- Hazır bir politikayı kopyalayıp test etmeden uygulamak ve sayfayı bozmak
- Korumayı boşa çıkaran
unsafe-inlineveunsafe-evaldeğerlerini kalıcı bırakmak - Tüm üçüncü taraf alan adlarına geniş izin vermek
- CSP’yi tek XSS savunması saymak; girdi doğrulama ve çıktı kodlama yine gereklidir
Sık sorulan sorular
CSP nedir ve ne işe yarar?
Tarayıcıya sayfanın hangi kaynaklardan içerik yükleyebileceğini söyleyen bir güvenlik başlığıdır. Özellikle XSS saldırılarının zararını sınırlamak için kullanılır.
CSP, XSS’i tamamen önler mi?
Hayır. CSP ek bir savunma katmanıdır ve etkisini azaltır, ancak açığın kendisini kapatmaz. Girdi doğrulama ve çıktı kodlama yine esastır.
CSP’yi güvenle nasıl devreye alırım?
Önce raporlama modunda çalıştırıp ihlalleri inceleyin, politikayı sitenize göre ayarlayın ve ancak sonra engelleme moduna geçin. Bu yaklaşım sayfanın beklenmedik biçimde bozulmasını önler.
Bu terimin geçtiği rehberler
- XSS önleme ve CSP ile site savunmasıSiteler arası betik çalıştırma (XSS) saldırılarını çıktı kaçışı, güvenli çerezler ve Content-Security-Policy başlığıyla önleyin; Nginx ve Apache örnekleri ve Report-Only ile güvenli geçiş.
- Güvenlik başlıkları: HSTS, CSP ve diğerleriNginx ve Apache için HSTS, CSP, X-Frame-Options, X-Content-Type-Options ve Referrer-Policy güvenlik başlıklarını güvenli biçimde ekleyin ve test edin.
İlgili terimler
- Derinlemesine savunma (defense in depth)Tek bir korumaya güvenmek yerine birbirini tamamlayan birden çok güvenlik katmanını üst üste kullanma yaklaşımı.
- Dosya bütünlüğü izleme (FIM)Kritik dosyaların yetkisiz değişikliklerini özet değerleriyle karşılaştırarak tespit eden güvenlik kontrolü.
- En az yetki ilkesiHer kullanıcı ve sürecin yalnızca işi için gereken yetkiye sahip olması.
- Fail2banGünlüklerdeki başarısız giriş denemelerini görüp ilgili IP’yi geçici engelleyen araç.
- Güvenlik bülteni (advisory)Üreticinin bir açığı, etkilenen sürümleri ve çözümü duyurduğu resmi bildirim.
- Güvenlik denetimi (audit)Bir sistemin güvenlik kontrollerinin politika, standart veya en iyi uygulamalara göre bağımsız biçimde incelenip belgelenmesi.