jekcms.alfadizayn.com/tr/blog/jekcmste-islemsel-e-posta-varsayilan-smtpnin-otesi" class="auto-link" target="_blank" rel="noopener">Varsayılan JekCMS CSP, hem betikler hem de stiller için 'unsafe-inline' içeriyor. Bu kasıtlı: yönetim paneli çeşitli bileşenlerinde satır içi olay işleyicileri kullanıyor; varsayılan temalar performans nedeniyle kritik CSS'i satır içine gömuyor. Politikayı sıkılaştırmadan önce, siteyi sıkı bir CSP ile yalnızca raporlama modunda çalıştırıp ihlal raporlarını inceleyerek hem yönetim panelini hem de aktif temanızı denetleyin.

Yazı Tiplerini Kendi Sunucunuzda Barındırmak İki Direktifi Ortadan Kaldırır

Google Fonts'tan yüklenen yazı tipleri iki direktif gerektiriyor: font-src fonts.gstatic.com ve style-src fonts.googleapis.com. Hem gizlilik hem de performans açısından önerdiğimiz kendi sunucunda barındırma yöntemine geçerseniz her ikisini de 'self' ile değiştirebilir ve harici yazı tipi bağımlılıklarını tamamen kaldırabilirsiniz. JekCMS'in varsayılan Trends teması, Latin ve Türkçe karakter aralıklarını kapsayan kendi sunucusunda barındırılan Inter alt kümesiyle geliyor.

img-src İçin Açık Listeleme

img-src direktifi, içeriğinizin görsel yüklediği her harici etki alanını içermeli. Yaygın bir hata, herhangi bir HTTPS görsel kaynağına izin vermek için img-src https: ayarlamak — bu, görsel tabanlı saldırılara karşı CSP'nin büyük bölümünü işlevsiz kılıyor. Gerçek görsel kaynaklarınızı açıkça listeleyin: img-src 'self' cdn.siteniz.com data:. Dinamik kullanıcı içeriği barındıran siteler için harici etki alanı listesini düzenli aralıklarla gözden geçirme alışkanlığı edinin.

Her Zaman Yalnızca Raporlama Moduyla Başlayın

Zorunlu kılmadan önce yalnızca raporlama modunu deneyin: bir toplama uç noktasına işaret eden report-uri ile Content-Security-Policy-Report-Only ayarlayın. report-uri.com'un ücretsiz katmanı küçük siteler için iyi çalışıyor. Zorunlu kılma moduna geçmeden önce en az bir hafta boyunca ihlalleri toplayın; hafta sonu trafiği genellikle hafta içi izlemenin kaçırdığı kod yollarını çalıştırıyor. Yanlış yapılandırılmış bir CSP, sitenizi kullanan herkes için ciddi işlevsellik sorunlarına yol açabilir.

Eksiksiz JekCMS CSP Sablonu

Cogu JekCMS temasi ve yaygin ucuncu taraf hizmetleriyle calisan uretime hazir CSP basligi:

Content-Security-Policy:
 default-src 'self';
 script-src 'self' 'unsafe-inline' https://www.googletagmanager.com;
 style-src 'self' 'unsafe-inline';
 img-src 'self' data: https://www.google-analytics.com;
 font-src 'self';
 connect-src 'self' https://www.google-analytics.com;
 frame-src 'self' https://www.youtube.com;
 object-src 'none';
 base-uri 'self';
 form-action 'self';
 frame-ancestors 'self';
 upgrade-insecure-requests;

Direktif Aciklamalari

  • default-src 'self' — acikca listelenmemis tum kaynak turleri icin gecerli olan temel kural
  • object-src 'none' — Flash, Java applet'leri ve diger eklenti iceriklerini tamamen engeller
  • base-uri 'self' — saldirganlarin goreli URL'leri yonlendirmek icin base etiketi enjekte etmesini onler
  • frame-ancestors 'self' — clickjacking saldirilarini engeller
  • upgrade-insecure-requests — HTTP isteklerini otomatik HTTPS'ye donusturur

Google AdSense Eklemeleri

Google AdSense calisan siteler ek direktifler gerektirir. Minimum eklemeler:

script-src https://pagead2.googlesyndication.com https://adservice.google.com;
img-src https://pagead2.googlesyndication.com;
frame-src https://googleads.g.doubleclick.net https://tpc.googlesyndication.com;

AdSense ihlalleri, sitelerin siki CSP politikalarindan vazgecmesinin bir numarali nedenidir. 6 aylik surede 3 yeni alan adi eklenmesini gozlemledik. AdSense kullaniyorsaniz zorunlu basliginizin yaninda kalici olarak Report-Only modu tutun.

Yaygin Hatalar ve Hata Ayiklama

  • Bir kutuphane eval() kullandigi icin unsafe-eval kullanmak — alternatif kutuphane bulun
  • CDN alan adlarini genis beyaz listeye almak — saldirganlar ayni CDN'de betik barindirabilir
  • AJAX istekleri icin connect-src unutmak — admin paneli islevselligini sessizce bozar
  • Admin panelini ayri test etmemek — on yuzden farkli betikler yukler

Nonce Tabanli Betik Yukleme

Script direktifinden 'unsafe-inline' kaldirmak isteyen siteler icin JekCMS nonce tabanli betik yuklemeyi destekler. Security sinifi her istekte rastgele bir nonce uretir ve bunu csp_nonce() araciligiyla kullanilabilir kilar. Yonetim paneli ve temadaki her satir ici betik bu nonce niteligini icermelidir. unsafe-inline'dan nonce'lara gecis genellikle admin ve tema dosyalarinda 15-25 satir ici betik etiketinin guncellenmesini gerektirir.

// Security.php nonce uretir
$nonce = bin2hex(random_bytes(16));

// header.php'de nonce kullanimi
<script nonce="<?= csp_nonce() ?>">
 document.documentElement.className += ' js-enabled';
</script>

// CSP basligi nonce icerir
script-src 'nonce-{uretilen_nonce}' 'strict-dynamic';

Uretimdeki CSP Izleme

CSP dagitimdan sonra surekli izleme kurun. JekCMS, report-uri kendi sitenize isaret ettiginde CSP ihlallerini audit_log tablosuna kaydeder. Dagitimdan sonraki ilk ay boyunca bu kayitlari haftalik olarak inceleyin.

47 sitede gozlemledigimiz en yaygin uc ihlal kaynagi: betik enjekte eden tarayici uzantilari (tum ihlallerin %60'i), HTTP kaynaklarina referans veren eski icerik (%25) ve alan adi altyapisini degistiren ucuncu taraf analitik hizmetleri (%15). Yalnizca son kategori CSP politika guncellemesi gerektirir.

Yonetim Paneli ve Frontend Icin Farkli CSP

Yaygin bir hata ayni CSP'yi hem yonetim paneline hem de herkese acik frontend'e uygulamaktir. Yonetim paneli surukle-birak medya yuklemeleri, CodeMirror soz dizimi vurgulama ve WYSIWYG editorleri icin satirici olay isleyicileri kullandigindan daha serbest kurallar gerektirir.

JekCMS tum /admin/ rotlarina ayri, gevsetilmis bir politika uygularken frontend'i siki tutar. Yonetim politikasi CodeMirror icin 'unsafe-eval' ve gorsel onizleme kucuk resimleri icin blob: ekler. Bu cift politika yaklasimi, yonetim paneli aksi halde puani dusrecek ozellikler kullansa bile herkese acik sayfalarin Observatory'de A+ guvenlik derecesini korumasini saglar.

Bunu uygulamak icin Security.php ara yazilimi CSP basliklarini ayarlamadan once istek URI'sini kontrol eder. Yol /admin/ ile basliyorsa ve kullanici kimlik dogrulanmissa yonetim politikasi uygulanir. Diger tum istekler siki frontend politikasini alir. Bu kontrol herhangi bir cikti gonderilmeden once calisir ve sablon onbelleklemesinden bagimsiz olarak basliklarin dogru ayarlanmasini saglar.