Defaults.Exposed › Düzeltmeler › İçerik Güvenliği Politikası (CSP)
İçerik Güvenliği Politikası (CSP) nasıl düzeltilir
İçerik Güvenliği Politikası, web sitenizin her ziyaretçinin tarayıcısına verdiği, tam olarak hangi kodun çalışmasına izin verildiğini söyleyen güvenlik kuralıdır. Bu olmadan sayfaya kötü niyetli herhangi bir şey bulaştığında — yorum kutusu, hacklenmiş eklenti veya üçüncü taraf komut dosyası aracılığıyla — tarayıcı asma kilit hâlâ açıkken müşterilerinizin kart numaralarını ve şifrelerini yazarken sessizce toplayan kod dahil her şeyi serbestçe çalıştırır.
İşletmeniz için sonuç: Siteniz kurcalanırsa kötü niyetli kod, her şey tamamen normal görünürken müşterilerin ödeme kartı ve giriş bilgilerini kendi ödeme kasanızdan doğrudan okuyabilir — bu durum, geri ödeme talepleri, dolandırıcılık şikâyetleri, bildirilebilir veri ihlali ve büyük müşterilerin güvenlik ekiplerinin anlaşmayı durdurmak veya iptal etmek için kullandığı kontrol başarısızlığıyla sonuçlanır.
Bu size ne mal olabilir
- Sayfa sayfalarınızdan birine savunmasız bir eklenti veya güvenliği ihlal edilmiş üçüncü taraf komut dosyası aracılığıyla birkaç satır kod sızdırılır ve müşterilerin kasada girdiği her kart numarası, ad ve CVK gerçek zamanlı kopyalanarak saldırgana gönderilir; siteniz tamamen normal görünür ve asma kilit orada durur. Durumu haftalarca sonra, ödeme sağlayıcınız mağazanızdan gelen dolandırıcılık raporları kümesi hakkında sizi aradığında öğrenirsiniz.
- Dolandırıcı, gerçek web sitenize ödemeleri kendi hesabına yönlendiren inandırıcı 'buraya öde' kutusu yerleştirir; müşteriler size ödediklerini sanır, mallar hiç gelmeyince sizi suçlar ve geri para ister.
- Daha büyük bir müşterinin güvenlik ekibi sitenizin otomatik taramasını yapar. Bu temel koruma eksikliği hemen yüksek öncelikli açık olarak görünür. Bir tedarik veya güvenlik değerlendirmecisine bu tek eksik güvence 'bu tedarikçi temelleri yapmıyor' anlamına gelir — anlaşma siz düzeltme yapana kadar askıya alınır ya da sessizce rakibe gider.
- Bir veri ihlali eksik, standart, ücretsiz bir güvenceye dayandığında artık şans işi olmaktan çıkıp ihmal gibi görünmeye başlar. Bu, düzenleyicinin sorularını, müşteri bildirim yükümlülüğünü ve maliyeti değiştirir — olay kapatıldıktan çok sonra devam eden itibar hasarı da dahil.
Neden önemlidir. Asma kilit sitenize bağlantının özel olduğunu kanıtlar; ama içinde hangi kodun çalıştığını kontrol etmek için hiçbir şey yapmaz. İçerik Güvenliği Politikası tam bunu yapan güvencedir — tarayıcılara güvenmediğiniz bir kaynaktan gelen her komut dosyasını yoksaymasını söyler; böylece tek kurcalanmış alan, reklam veya eklenti müşterilerin parasını ve verilerini çalmak için araca dönüşemez. Puan kartınızda puanlanan bir kontroldür, gerçek puanlar taşır ve profesyonel güvenlik değerlendirmesinin aradığı ilk şeylerden biridir.
Sade dille nedir
Biri web sitenizi ziyaret ettiğinde tarayıcısı sayfanızı indirir ve üzerindeki kodu çalıştırır — menülerin açılmasını, düğmelerin çalışmasını, ödeme formlarının gönderilebilmesini sağlayan komut dosyaları ve benzeri. Varsayılan olarak tarayıcı bunların tümüne güvenir. Hangisinin gerçekten sizin olduğunu, hangisinin başkası tarafından sızdırıldığını ayırt etme yolu yoktur.
İçerik Güvenliği Politikası (kısaca CSP) web sitenizin her sayfaya eklediği kısa kural listesidir; tarayıcıya şunu söyler: “Yalnızca onayladığım bu kaynaklardan gelen kodu çalıştır, geri kalanını reddet.” Bu, herkesi içeri alan gece kulübü ile kapıda misafir listesi olan arasındaki fark gibidir.
Bunun bu kadar önemli olmasının nedeni, web sitelerinin sürekli olarak kurcalanmasıdır — her zaman sunucunuzu hackleyerek değil, çoğu sitenin açık bıraktığı arka kapılar aracılığıyla: yorum alanı, arama kutusu, eski eklenti, reklamlar veya analitik için üçüncü taraf komut dosyası ya da bir sohbet widget’ı. Bir saldırgan sayfalarınızdan birine kendi kodunun tek satırını sokabilirse tarayıcı onu sizinmiş gibi çalıştırır. Oradan müşterilerin yazdığı her şeyi — kart numaraları, şifreler, adresler — okuyup sessizce başka yere gönderebilir. İçerik Güvenliği Politikası onaylamadığınız bir kaynaktan gelen her şeyi çalıştırmayı reddederek bu kapıyı kapatır.
Size maliyeti ne olabilir
Bu soyut değil. İçerik Güvenliği Politikasının önlediği saldırı — bir sayfaya enjekte edilen ve kendi müşterilerinizden veri çalan kod — kayıt tarihindeki en büyük kart kopyalama ihlallerinin bazılarının arkasındadır. Normal bir işletme için nasıl geliştiği:
-
Görünmez ödeme kopyalayıcı. Saldırgan savunmasız eklenti veya güvenliği ihlal edilmiş üçüncü taraf komut dosyası aracılığıyla ödeme sayfanıza birkaç satır kod sızdırır. Müşterilerin girdiği her kart numarası, ad ve CVK gerçek zamanlı kopyalanarak saldırgana gönderilir. Siteniz mükemmel görünür ve çalışır; asma kilit orada durur. Durumu haftalarca sonra, ödeme sağlayıcınız hepsinin mağazanıza kadar izlenebilir dolandırıcılık raporları kümesi hakkında sizi aradığında öğrenirsiniz. Artık geri ödemelerle, zorla güvenlik denetimiyle, kart işleme haklarının olası kaybıyla ve bildirmek zorunda kalabileceğiniz bir ihlalle yüz yüzesiniz.
-
Sahte ödeme formu. Dolandırıcı gerçek web sitenize inandırıcı “buraya öde” kutusu yerleştirir. Müşteriler markanıza güvenerek bilgilerini girer; para ve veri saldırgana gider. Müşteriler sizi suçlar — ve haksız da değiller, çünkü sitenizde oldu.
-
Kaybedilen sözleşme. Daha büyük bir müşterinin güvenlik ekibi, satıcı durum tespiti kapsamında sitenizin otomatik taramasını çalıştırır. Eksik İçerik Güvenliği Politikası hemen yüksek öncelikli açık olarak ortaya çıkar. Bir tedarik veya güvenlik değerlendirmecisine bu tek eksik güvence “bu tedarikçi temelleri yapmıyor” anlamına gelir — ve anlaşma siz düzeltme yapana kadar askıya alınır ya da sessizce rakibe gider.
-
Bildirilebilir ihlal. Bir veri ihlali standart, ücretsiz bir güvencenin eksikliğine dayandığında artık şanssızlık olmaktan çıkıp ihmal gibi görünmeye başlar. Bu düzenleyicinin sorularını, müşteri bildirim yükümlülüğünü ve maliyeti değiştirir — hem para cezası hem de olaydan çok sonra süren itibar hasarı.
-
Güvenliği ihlal edilmiş reklam veya widget. Birçok site reklam ağları, yazı tipleri, destek sohbeti, analitik gibi dış taraflardan kod yükler. Bunlardan herhangi biri ihlal edilirse kötü niyetli kod doğrudan sayfalarınıza biner. İçerik Güvenliği Politikası yalnızca güvendiğiniz belirli dış kaynakları izin vererek patlama yarıçapını sınırlar; böylece bir tedarikçinin ihlali otomatik olarak sizinkine dönüşmez.
Teknik olarak nedir (ayrıntı)
İçerik Güvenliği Politikası, web sunucunuzun her sayfayla gönderdiği tek bir HTTP yanıt başlığı olarak iletilir. Değeri, her içerik türünü ve bunun için izin verilen kaynakları adlandıran direktifler kümesidir. Örneğin:
Content-Security-Policy: default-src 'self'; script-src 'self'; object-src 'none'; frame-ancestors 'self'
Sade dilde şunu söyler: varsayılan olarak yalnızca kendi sitenden şey yükle; yalnızca kendi sitenden komut dosyaları çalıştır; eski türden eklentilere izin verme; başka siteler benimkini çerçeveye alma.
“İyi” neye benzer. Kontrolümüz yalnızca başlığın varlığına bakmaz — politikayı direktif direktif okur ve gerçekte ne kadar güçlü olduğunu bir güvenlik değerlendirmecisi gibi puanlar. Güçlü politika:
- Kısıtlayıcı temel ayarlar (
default-src 'self') koyar ve yalnızca gerçekten kullandığınız belirli güvenilir üçüncü taraflar için genişletir. - Boşluklardan kaçınır. Komut dosyaları için
'unsafe-inline'veya'unsafe-eval'kullanmaz; komut dosyaları için joker karakter (*) veya yalın şema kaynakları (https:gibi) kullanmaz — bunlar politikanın kapatmak için tasarlandığı kapıyı etkin olarak yeniden açar. Satır içi komut dosyaları gerçekten gerektiğinde yalnızca belirli onaylı kodunuzun çalışması için nonce veya hash kullanır. frame-ancestors 'self'ile çerçevelemeyi kilitler veobject-src 'none'ile eski eklentileri devre dışı bırakır.- Uygular, yalnızca raporlamaz.
Content-Security-Policy-Report-Onlybaşlığı yalnızca izler; çalışma zamanında sıfır koruma sağlar. Kontrolümüz buna küçük bir kredi verir ve asla geçiş olarak kaydetmez. Yalnızca politika uygulandığında korunursunuz.
'unsafe-inline', 'unsafe-eval' veya joker karakterlere dayanan politika hâlâ düşük puan alır — çünkü pratikte çok az gerçek koruma sağlar. Hedef sıkı politika, sadece herhangi bir politikadır.
Nasıl düzeltilir (ücretsiz, ~1–2 saat)
BT uzmanınıza veya web sitenizi çalıştıran kişiye iletin — düzeltmenin kendisi tamamen ücretsizdir. Yalnızca zamanla yerinde ve doğru kaldığını izlemek için ücret alıyoruz; açmak hiçbir şeye mal olmaz. Bunun dakikalar yerine bir iki saat almasının nedeni, kendi sitenizin bazı bölümlerini yanlışlıkla engellemesini önleyen dikkatli deneme adımıdır.
-
Yalnızca raporlama modunda başlayın — henüz uygulamayın.
Content-Security-Policy-Report-Onlyyanıt başlığı ekleyin. Bu, canlı site çalışmaya devam ederken engellenen şeyleri izler ve kaydeder; böylece her sayfanın gerçekten neye dayandığını öğrenirsiniz. (Önemli: tek başına yalnızca raporlama ziyaretçilere hiç koruma sağlamaz — yalnızca güvenli ilk adımdır.) -
Politikayı sitenizin gerçekte kullandıklarından oluşturun. Her meşru komut dosyası, stil, yazı tipi ve resim kaynağını bulmak için raporları inceleyin — kendi alan adınız, analitikleriniz, ödeme sağlayıcınız, yazı tipi barındırıcınız, sohbet widget’ınız — ve bunları izin verilen kaynaklar olarak listeleyin. Sağlam başlangıç noktası, gerçekten kullandığınız güvenilir üçüncü taraflar için açık girişler artı
default-src 'self'’dir. -
Tüm amacı bozan boşluklardan kaçının. Komut dosyaları için
'unsafe-inline've'unsafe-eval'’den uzak durun; komut dosyaları için*vehttps:gibi joker karakter kaynaklar kullanmayın — bunlar politikanın kapatmak için tasarlandığı tam açığı yeniden açar. Satır içi komut dosyaları kaçınılmazsa yalnızca belirli onaylı kodunuzun çalışması için nonce veya hash kullanın. -
Çerçeveleme ve eklentileri kilitleyin.
frame-ancestors 'self'ekleyin (bu aynı zamanda başka sitelerin sizinkini yerleştirerek müşterileri aldatmasını da önler ve ilgili tıklama korsanlığı kontrolünü de karşılar) ve eski eklenti tabanlı saldırıları engellemek içinobject-src 'none'ekleyin. -
Yalnızca raporlamadan uygulamaya geçin. Raporlar temizlenip site çalışmaya devam ettiğinde başlık adını
Content-Security-Policy-Report-Only’denContent-Security-Policy’e değiştirin. Gerçek korumayı sağlayan adım budur — yalnızca raporlama politikası sağlamaz ve kontrolü geçmez.Başlığı nereye ayarlayacağınız platforma göre değişir:
- Cloudflare: Kurallar → Dönüştürme Kuralları → Yanıt Başlığını Değiştir →
Content-Security-Policyayarlayın. - Nginx:
add_header Content-Security-Policy "default-src 'self'; script-src 'self'; object-src 'none'; frame-ancestors 'self';" always; - Apache:
Header always set Content-Security-Policy "default-src 'self'; script-src 'self'; object-src 'none'; frame-ancestors 'self';" - IIS (web.config):
Content-Security-Policyadlı ve politikayı değer olarak içeren özel HTTP yanıt başlığı ekleyin. - Google Workspace / Microsoft 365: Bunlar e-postanızı çalıştırır, genel web sitenizi değil; dolayısıyla politika, web sitenizin gerçekte barındırıldığı yer olan (Cloudflare veya yukarıdaki web barındırıcınız) ayarlanır, e-posta yönetici konsolunuzda değil.
- Cloudflare: Kurallar → Dönüştürme Kuralları → Yanıt Başlığını Değiştir →
-
Alan adınızı yeniden kontrol edin ve politikanın şimdi açık ve uygulandığını, zayıflatan boşluklar olmadığını doğrulayın.
Yaygın hatalar
- Yalnızca raporlamada durmak. En yaygın hata: yalnızca raporlama modunda politika eklenir, herkes devam eder ve site hiçbir zaman gerçekten korunmaz. Yalnızca raporlama hiçbir şeyi engellemez. Uygulamaya geçmeniz gerekir.
- “Sadece çalışsın diye”
'unsafe-inline'’a ulaşmak. Politika meşru satır içi komut dosyasını engellediğinde hızlı düzeltme tüm satır içi komut dosyalarına izin vermektir — ama bu tam da politikanın kapatmak için tasarlandığı deliği yeniden açar. Bunun yerine nonce veya hash kullanın. - Joker karakter kullanmak.
script-src’de yalın*(veyahttps:) her yerden komut dosyalarına izin verir; bu politikanın neredeyse hiç gerçek koruma sağlamadığı ve hâlâ düşük puan alacağı anlamına gelir. - Üçüncü taraf kaynaklarını unutmak. Gerçekten kullandığınız dış hizmetleri (analitik, yazı tipleri, ödeme widget’ları) listeden çıkarmadan katı politika uygulamak sitenizin bazı bölümlerini bozabilir — bu tam da yalnızca raporlama deneme adımının var olma nedenidir.
- Yalnızca ana sayfaya ayarlamak. Politikanın, saldırıya değer sayfalar olan ödeme, giriş ve hesap sayfaları dahil her sayfayı kapsaması gerekir.
- Asma kilidin yerini tuttuğunu sanmak. İçerik Güvenliği Politikası ve HTTPS/HSTS farklı şeyleri korur. Hepsini istersiniz; biri diğerinin yerini tutmaz.
SSS
Teknik bilgim yok — bunu kendim halledebilir miyim?
Ayrıntıları anlamanıza gerek yok. Bu, web sitenizi veya barındırmanızı çalıştıran kişi tarafından eklenen bir ayardır ve Cloudflare gibi hizmetlerde büyük ölçüde yönlendirmelidir. 'Nasıl düzeltilir?' bölümünü onlara iletin. Ücretsizdir; dikkat edilmesi gereken nokta, kendi sitenizin bazı bölümlerini yanlışlıkla engellemeyecek şekilde önce izle modunda başlatılmasıdır — adımlar tam olarak bunu kapsar.
Zaten asma kilit ve SSL sertifikasına sahibim — sitem güvenli değil mi?
Asma kilit sayfanızın teslimini güvence altına alır; içinde çalışanı kontrol etmez. Sayfaya kötü niyetli bir kod bulaşırsa — hacklenmiş eklenti, güvenliği ihlal edilmiş reklam veya enjekte edilmiş alan aracılığıyla — asma kilit veri çalmayı durdurmaz. İçerik Güvenliği Politikası, ilk elde neyin çalışmasına izin verileceğini sınırlayan katmandır. Farklı şeyleri korurlar ve her ikisini de istersiniz.
Bunu açmak siteyi bozabilir mi?
Bir anda agresif şekilde açılırsa olabilir; çünkü gerçekten kullandığınız meşru komut dosyalarını engelleyebilir. Bu yüzden standart yaklaşım, engellemeden izleyen 'yalnızca raporlama' deneme modunda başlamak, işaretlediklerini düzeltmek ve ancak sonra uygulamaktır. Bu şekilde yapıldığında güvenlidir — ve deneme adımı aşağıdaki düzeltmeye yerleştirilmiştir.
Zaten 'yalnızca raporlama' moduna aldık — korunuyor muyuz?
Hayır ve bu en yaygın yanlış güvenlik hissidir. Yalnızca raporlama modu, engellenen şeyleri izler ve kaydeder ama hiçbir şeyi engellemez — ziyaretçiler sıfır gerçek koruma alır. Yalnızca güvenli ilk adımdır. Kontrolümüz yalnızca raporlamaya gerçek politikanın küçük bir bölümü kadar kredi verir ve geçiş olarak kaydetmez. Uygulama moduna geçtiğinizde korunursunuz.
Bu notumumuzu etkiler mi yoksa yalnızca tavsiye mi?
Notunuzu etkiler. İçerik Güvenliği Politikası kontrolü puanlanır ve Web Güvenliği kategorisinde 25 puana kadar değer taşır. Eksik veya zayıf politika yüksek önem derecesiyle işaretlenir ve notunuzu düşürür — ve tam olarak bir müşterinin güvenlik anketinin sorduğu türden bir açıktır.
Geliştirici politika ekledi ama puan hâlâ düşük — neden?
Politika var olabilir ama hâlâ zayıf olabilir. En yaygın suçlular 'unsafe-inline' ve 'unsafe-eval' gibi komut dosyaları için boşluklar veya politikanın kapatmak için tasarlandığı tam açığı yeniden açan joker karakter kaynaklardır. Kontrolümüz politikayı direktif direktif okur ve bu zayıflıkları puanlar — her şeye izin veren politika yoktan biraz iyidir. Düzeltme, bu boşluklar yerine nonce'lar veya hash'ler kullanmaktır.