# Content Security Policy (İçerik Güvenliği Politikası)

Adres: https://softwaredictionary.org/tr/terimler/content-security-policy
Kategori: Güvenlik
Son güncelleme: 2026-09-30
Okunuşu: kontent sikyurıti polısi

Kısaca: Content Security Policy, tarayıcıya sayfanın hangi betik, stil ve kaynakları yükleyebileceğini bildirip enjekte edilen kodu engelleyen HTTP yanıt başlığıdır.

## Content Security Policy nedir?

Content Security Policy (CSP), bir web sitesinin `Content-Security-Policy` HTTP başlığında gönderdiği kurallar bütünüdür. Direktif adı verilen her kural, bir kaynak türü için izin verilen kaynakları listeler: JavaScript için `script-src`, CSS için `style-src`, görseller için `img-src`, `fetch()` ve WebSocket bağlantıları için `connect-src` gibi. Tarayıcı kuralları uygular ve eşleşmeyen her şeyi engeller.

CSP, esas olarak cross-site scripting'e (XSS) karşı ikinci bir savunma hattıdır. Bir saldırgan sayfaya bir `<script>` etiketi ya da satır içi olay işleyicisi enjekte etmeyi başarırsa, sıkı bir politika tarayıcının onu çalıştırmasını engeller; çünkü betik izin verilen bir kaynaktan gelmiyordur. Önerilen yaklaşım, nonce veya hash tabanlı sıkı bir politikadır: sunucu her yanıt için yeni bir rastgele nonce üretir ve bunu hem başlığa hem de her meşru `<script>` etiketine ekler; böylece yalnızca bu betikler çalışır.

CSP'yi sayfanız için bir konuk listesi gibi düşünün: bir hata sayesinde içeri bir davetsiz misafir sızsa bile kapıdaki görevli yalnızca isimleri listede olan betikleri içeri alır. CSP ayrıca, sayfanızı hangi sitelerin bir iframe içine gömebileceğini denetleyen `frame-ancestors` direktifiyle clickjacking'i engelleyebilir ve `upgrade-insecure-requests` ile güvensiz kaynak isteklerini HTTPS'e yükseltebilir.

CSP, XSS hatalarını çıktı kodlaması ve sanitization ile düzeltmenin yerini tutmaz; bir hata gözden kaçtığında zararı sınırlar. Sık yapılan hatalar, `script-src`'e `'unsafe-inline'` ya da `https:` gibi geniş kaynaklar eklemektir; bunlar korumanın çoğunu iptal eder. Yeni bir politikayı önce `Content-Security-Policy-Report-Only` başlığıyla devreye alın, ihlal raporlarını inceleyin ve meşru kaynaklar artık engellenmediğinde zorunlu uygulamaya geçin.

## Önemli noktalar

- CSP, bir sayfanın kaynakları nereden yükleyebileceğini kısıtlayan bir HTTP başlığıdır.
- Asıl amacı enjekte edilen betikleri engellemek ve XSS zararını azaltmaktır.
- Sıkı politikalar, uzun alan adı izin listeleri yerine nonce veya hash kullanır.
- `frame-ancestors`, clickjacking'e karşı korur.
- Uygulamadan önce `Content-Security-Policy-Report-Only` ile test edin.

## Örnek: Nonce tabanlı sıkı bir politika

```http
# Only scripts carrying this response's nonce may run
# (the server generates a new random nonce for every response)
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Content-Security-Policy: script-src 'nonce-r4nd0mV4lue' 'strict-dynamic'; object-src 'none'; base-uri 'none'; frame-ancestors 'self'

<!-- Allowed: the nonce matches the header -->
<script nonce="r4nd0mV4lue" src="/app.js"></script>

<!-- Blocked: an injected script has no valid nonce -->
<script>stealCookies()</script>
```

## Sık sorulan sorular

**Content Security Policy, XSS'i önler mi?**

Sıkı bir CSP, enjekte edilen betiklerin çalışabileceği yolların çoğunu engeller ve XSS'in etkisini büyük ölçüde azaltır, ancak bir çare değil, yedek bir katmandır. Yine de çıktıyı kodlamanız ve kullanıcının sağladığı HTML'i sanitize etmeniz gerekir.

**CSP nonce nedir?**

Nonce, her yanıt için yeniden üretilen ve CSP başlığına ile her güvenilir `<script>` etiketine yerleştirilen rastgele bir değerdir. Tarayıcı yalnızca eşleşen nonce'a sahip betikleri çalıştırır ve saldırgan bunu önceden tahmin edemez.

**CSP'de unsafe-inline ne anlama gelir?**

`'unsafe-inline'`, satır içi betiklerin ve `onclick` gibi olay işleyici özniteliklerinin çalışmasına izin verir; çoğu XSS saldırısının enjekte ettiği şey tam olarak budur. `script-src` içinde bundan kaçının ve bunun yerine nonce veya hash kullanın.

---

Software Dictionary: https://softwaredictionary.org/tr · https://softwaredictionary.org/tr/llms.txt
