Content-Security-Policy (CSP): nedir ve nasıl eklenir
Content-Security-Policy (CSP), tarayıcıya hangi script, stil ve diğer içerik kaynaklarını yükleyip çalıştırabileceğini söyleyen bir HTTP yanıt header'ıdır. İyi bir CSP, cross-site scripting (XSS) saldırılarına karşı en güçlü savunmalardan biridir.
Nedir
CSP, tarayıcı tarafından uygulanan bir izin listesidir. Sunucun bir Content-Security-Policy header'ı gönderdiğinde tarayıcı, politikanın açıkça izin vermediği hiçbir şeyi — inline script'ler, üçüncü taraf alan adları, eval() vb. — yüklemeyi veya çalıştırmayı reddeder.
Bir politika, direktiflerden oluşan bir listedir. Örneğin script-src 'self' "yalnızca kendi origin'imden sunulan JavaScript'i çalıştır" anlamına gelirken, object-src 'none' eski plugin'leri tamamen engeller.
Neden önemli
CSP olmadan, herhangi bir HTML-injection veya XSS hatası, bir saldırganın kullanıcılarının tarayıcılarında keyfi JavaScript çalıştırmasına — oturumları çalmasına, sayfayı yeniden yazmasına veya veri sızdırmasına — olanak tanır.
Zayıf bir CSP neredeyse hiç yok kadar kötüdür. 'unsafe-inline', saldırganların dayandığı inline script'lere yeniden izin verir ve script-src * gibi joker bir kaynak, script'lerin her yerden yüklenmesine izin vererek amacı boşa çıkarır.
Nasıl düzeltilir
Header'ı next.config.js içinde ayarla ki her yanıta uygulansın. Katı başla ve yalnızca gerektiği yerde gevşet.
// next.config.js
const csp = [
"default-src 'self'",
"script-src 'self'",
"style-src 'self' 'unsafe-inline'",
"img-src 'self' data:",
"base-uri 'none'",
"frame-ancestors 'none'",
"object-src 'none'",
].join("; ");
module.exports = {
async headers() {
return [{ source: "/:path*", headers: [{ key: "Content-Security-Policy", value: csp }] }];
},
};Inline script'lere ihtiyacın varsa, istek başına bir nonce üret ve 'unsafe-inline' kullanmak yerine hem script tag'ine hem de politikaya ekle (script-src 'self' 'nonce-<value>').
base-uri 'none', frame-ancestors 'none' ve object-src 'none', yaygın atlatmaları (base-tag enjeksiyonu, clickjacking ve plugin gömme) kapatır ve çoğu uygulama için güvenli varsayılanlardır.
SSS
CSP sitemi yavaşlatır mı?
Hayır. CSP yalnızca tarayıcının değerlendirdiği bir header'dır; ölçülebilir bir gecikme eklemez. Asıl maliyet, inline script'leri kaldırmak için gereken mühendislik çalışmasıdır.
Content-Security-Policy ile X-Frame-Options arasındaki fark nedir?
X-Frame-Options yalnızca iframe'e almayı (clickjacking) kontrol eder. CSP'nin frame-ancestors direktifi onun yerini alır ve CSP ayrıca script'leri, stilleri, görselleri ve daha fazlasını da yönetir.
Uygulaman etkileniyor mu?
AppSafe, bunu ve onlarca başka sorunu tek bir ücretsiz taramada kontrol eder.
Uygulamamı ücretsiz tara