İçerik Güvenliği Politikası (CSP) Oluşturucu
Bir Content Security Policy başlığını direktif direktif interaktif olarak oluşturun.
İçerik Güvenliği Politikası (CSP) Oluşturucu Hakkında
Bir Content Security Policy başlığını etkileşimli olarak oluşturur — bir sayfa için hangi kaynakların betik, stil, görsel, yazı tipi ve diğer kaynak türlerini yüklemesine izin verildiğini seçerek ve doğru direktif sözdizimini otomatik olarak birleştirerek. CSP, XSS'e karşı en etkili savunmalardan biridir, ama aynı zamanda elle en kolay yanlış yapılan başlıklardan biridir; tek bir eksik direktif veya aşırı izin veren bir joker karakter, ya meşru sayfa işlevselliğini bozabilir ya da korumayı sessizce etkisiz hale getirebilir. Yeni bir politikayı zorunlu kılmadan önce Content-Security-Policy-Report-Only modunda test etmek, üretimde önce bozmadan neyin bozulacağını yakalamanın standart yoludur.
Bozulan bir sayfayı yeniden çalıştırmak için 'unsafe-inline' veya 'unsafe-eval' eklemek, CSP'nin sağladığı korumanın çoğunu geçersiz kılar — bir politikanın çalışması bunlardan birine ihtiyaç duyuyorsa, asıl düzeltilmesi gereken sayfanın kendi satır içi (inline) betikleri veya stilleridir.
Hızlı hazır ayarlar
İlgili Araçlar
Pratik bir başlangıç politikası
Her şeyi kendi alan adından yükleyen bir site için sıkı ve kullanılabilir bir temel:
default-src 'self'; script-src 'self'; style-src 'self'; img-src 'self' data:; font-src 'self'; connect-src 'self'; object-src 'none'; base-uri 'self'; form-action 'self'; frame-ancestors 'none'
Üçüncü taraf kaynakları (analitik, CDN, yazı tipleri) yalnızca onlara ihtiyaç duyan yönergeye ekleyin.
En önemli yönergeler
| Yönerge | Neden |
|---|---|
default-src | Ayarlamadığınız tüm yükleme yönergeleri için varsayılan değer. |
script-src | XSS'e karşı ana savunma. 'unsafe-inline' kullanmaktan kaçının; gereken satır içi betikler için nonce veya hash kullanın. |
object-src 'none' | Eski eklenti içeriğini engeller. |
base-uri | Enjekte edilmiş bir <base> etiketinin göreli URL'leri yönlendirmesini önler. |
frame-ancestors | Sayfayı kimin çerçeve içine alabileceğini belirler (clickjacking). X-Frame-Options'ın modern karşılığı. |
form-action | Formların nereye gönderilebileceğini sınırlar. |
Siteyi bozmadan devreye almak
- Politikayı
Content-Security-Policy-Report-Onlybaşlığıyla gönderin. Tarayıcılar ihlalleri bildirir ama hiçbir şeyi engellemez. - Önemli tüm sayfaları açın ve tarayıcı konsolunda ihlalleri kontrol edin.
- Eksik kaynakları ekleyin veya satır içi kodu dosyalara taşıyın. Kalması gereken satır içi betikler için her yanıtta yeni üretilen bir
'nonce-…'değeri kullanın. - Politikayı uygulamak için başlığın adını
Content-Security-Policyolarak değiştirin.
Başlık mı, meta etiketi mi
<meta http-equiv="Content-Security-Policy"> etiketi çoğu yönerge için çalışır, ancak frame-ancestors, report-uri ve sandbox orada yok sayılır. HTTP başlığını tercih edin. Bir sitenin gerçekte ne gönderdiğini güvenlik başlıkları denetleyicisi ile kontrol edin.