Content Security Policy (CSP) nedir ve nasıl yapılandırılır?

Cevap

CSP, tarayıcıya sayfanın hangi kaynaklardan script, stil, görsel vb. yükleyebileceğini söyleyen bir HTTP yanıt başlığıdır. XSS'e karşı ikinci savunma hattıdır: saldırgan bir script enjekte etse bile tarayıcı onu çalıştırmaz.

Content-Security-Policy:
  default-src 'self';
  script-src 'self' 'nonce-r4nd0m123';
  style-src 'self';
  img-src 'self' data: https://cdn.example.com;
  connect-src 'self' https://api.example.com;
  frame-ancestors 'none';
  object-src 'none';
  base-uri 'self'

Önemli direktifler

  • default-src: diğerleri tanımlı değilse varsayılan.
  • script-src: en kritik olanı. 'unsafe-inline' ve 'unsafe-eval' kullanmak CSP'nin faydasını büyük ölçüde yok eder.
  • connect-src: fetch/WebSocket hedefleri.
  • frame-ancestors: sayfanın iframe içine alınmasını engeller (clickjacking).

Nonce ve strict-dynamic

Inline script gerekiyorsa her yanıtta rastgele bir nonce üretilir ve yalnızca o nonce'u taşıyan script çalışır:

<script nonce="r4nd0m123">initApp();</script>

'strict-dynamic' ile güvenilen script'in yüklediği script'lere de izin verilir; uzun domain listeleri yerine önerilen modern yaklaşımdır.

Kademeli geçiş

Mevcut uygulamada önce Content-Security-Policy-Report-Only ile ihlaller toplanır (report-to), kırılan yerler düzeltilir, sonra zorunlu moda geçilir.

  1. CORS nedir? Neden CORS hatası alırız?OrtaWeb GüvenliğiFull Stack
  2. XSS ve CSRF saldırıları nedir, nasıl korunulur?ZorWeb GüvenliğiFull Stack
  3. Authentication ile authorization arasındaki fark nedir?KolayWeb GüvenliğiFull Stack
  4. Güvenli cookie ayarları nelerdir? Session hijacking nasıl önlenir?OrtaWeb GüvenliğiFull Stack
  5. OWASP Top 10 nedir? En önemli maddelerini özetleyin.OrtaWeb GüvenliğiFull Stack
  6. Parolalar veritabanında nasıl saklanmalıdır? bcrypt ve Argon2 neden tercih edilir?OrtaWeb GüvenliğiFull Stack

Bu konuda başka bir soru biliyor musun?

Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.

Soru ekle