Ana içeriğe geç

Content Security Policy

İçerik Güvenliği Politikası

Okunuşu
kontent sikyurıti polısi
Güncellendi 2 dk okuma

Bu sayfayı paylaşın

Bağlantıyı gönderin, tanımı bağlantısıyla birlikte alıntılayın ya da kendi sitenizde bir kart olarak gösterin.

https://softwaredictionary.org/tr/terimler/content-security-policy

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 politikahttp
# 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.

İlgili sayfalar

Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin

Daha fazla

Ayarlar