ToolHub
View All Posts

İçerik Güvenliği Politikası (CSP) Rehberi

İçerik Güvenliği Politikası (CSP), modern web güvenliğinin temel taşıdır. Tarayıcıya hangi kaynakların yüklenebileceğini ve çalıştırılabileceğini söyleyen bir HTTP başlığıdır. CSP, siteniz için bir güvenlik duvarı görevi görür ve Cross-Site Scripting (XSS), clickjacking ve diğer kod enjeksiyon saldırılarının neden olduğu hasarı önler veya azaltır. CSP'nin düzgün yapılandırılması, hassas kullanıcı verileri veya finansal işlemlerle ilgilenen her site için kritik öneme sahiptir.

CSP Nedir?

CSP olmadan, bir saldırgan sitenize kötü amaçlı bir script enjekte ederse, tarayıcı bu scripti meşru site kodunuzdan ayırt edemez. CSP, bir güvenilir kaynaklar beyaz listesi tanımlar — bu listede olmayan her şey engellenir. Bu, bir saldırganın sayfanıza kötü amaçlı bir script etiketi eklemeyi başarsa bile, tarayıcının bunu yürütmeyi reddedeceği anlamına gelir.

CSP, HTTP yanıt başlığı aracılığıyla sunulur. Tarayıcı sayfayı render ederken, CSP başlığını okur ve her kaynak isteğini (script'ler, stil sayfaları, görseller, yazı tipleri vb.) politika ile karşılaştırır. Politika ile eşleşmeyen herhangi bir kaynak engellenir ve bir raporlama uç noktası yapılandırılmışsa ihlal raporu gönderilir.

Temel CSP Direktifleri

default-src, diğer fetch direktifleri için geri dönüş işlevi görür. Diğer direktiflerden herhangi biri yoksa, default-src tarafından belirtilen kaynaklar kullanılır. Çoğu politika, daha spesifik direktiflerle gerektiğinde geçersiz kılınan katı bir default-src ile başlar.

CSP Neden Önemlidir?

script-src, JavaScript'in hangi kaynaklardan yüklenip çalıştırılabileceğini kontrol eder. Bu, XSS saldırılarını önlemek için en kritik direktiftir. Katı bir script-src, CSP'nin koruma mekanizmasının kalbidir. Modern en iyi uygulama, inline script'leri ve eval() kullanımını engelleyen nonce tabanlı veya hash tabanlı bir yaklaşım kullanmaktır.

CSP Nasıl Çalışır?

style-src, CSS stil sayfalarının ve inline stillerin hangi kaynaklardan yüklenebileceğini kontrol eder. Script'lerden daha az tehlikeli olsa da, kötü amaçlı CSS veri sızdırma ve sayfa düzenini manipüle etmek için kullanılabilir. Çoğu site, kendi kaynaklarından stil sayfalarına ve güvenilir CDN'lerden yazı tiplerine izin verir.

default-src

img-src, görsellerin hangi kaynaklardan yüklenebileceğini kontrol eder. Görseller XSS'e neden olamazken, kullanıcı aktivitesini izlemek, kullanıcıları parmak izi ile tanımlamak veya diğer bilgi toplama saldırılarını gerçekleştirmek için kullanılabilir. Çoğu site, kendi alanından ve güvenilir CDN'lerden gelen görsellere izin verir.

CSP Kaynak Değerleri

connect-src, fetch(), XMLHttpRequest, WebSocket ve EventSource aracılığıyla yapılan ağ isteklerini kontrol eder. Bu, API çağrılarınızın hangi arka uç hizmetlere bağlanabileceğini kısıtlamak için önemlidir. Uygulamanızın yapması gereken uç noktaları belirtin ve geri kalan her şeyi engelleyin.

script-src

DirektifKontrol Ettiği KaynakÖrnek Değer
default-srcTüm kaynak türleri için geri dönüş'self'
default-src 'self'Tüm kaynakları aynı origin ile sınırlarDiğer direktiflerle geçersiz kılınan temel politika
script-srcJavaScript'self' https://cdn.example.com
script-src 'self' https://cdn.example.comKendi kaynağından ve belirtilen CDN'den script'lere izin verirXSS saldırılarını önler
style-srcCSS'self' 'unsafe-inline'
style-src 'self' 'unsafe-inline'Kendi kaynağından ve inline stillerden CSS'e izin verirStil sayfası yüklemesini kontrol eder
img-srcGörseller'self' data: https:
img-src 'self' data: https:Kendi kaynağından, data URL'lerden ve HTTPS'ten görsellere izin verirGörsel yüklemesini kontrol eder
connect-srcFetch/XHR/WebSocket'self' https://api.example.com

style-src

DeğerAnlamıKullanım Örneği
connect-src 'self' https://api.example.comKendi kaynağına ve API uç noktasına bağlantılara izin verirAPI isteklerini kısıtlar
font-srcYazı Tipleri'self' https://fonts.googleapis.com
font-src 'self' https://fonts.googleapis.comKendi kaynağından ve Google Fonts'tan yazı tiplerine izin verirWeb yazı tipi yüklemesini kontrol eder
frame-srciframe'ler'self' https://www.youtube.com

img-src

Directive Controls Example
frame-src 'self' https://www.youtube.comKendi kaynağından ve YouTube'dan iframe'lere izin verirGömülü içeriği kontrol eder
media-srcSes/Video'self'

CSP Oluşturma