JekCMS için İçerik Güvenlik Politikası: Üretime Hazır Şablon

jekcms gerçek, üretimde çalışan bir İçerik Güvenlik Politikasıyla gelir — ne katı bir şablon ne de bir pazarlama iddiasıdır. İşte tam olarak neyi engellediği, bilinçli olarak neye hâlâ izin verdiği ve nedeni.

JekCMS için İçerik Güvenlik Politikası: Üretime Hazır Şablon

jekcms gerçek, üretimde çalışan bir İçerik Güvenlik Politikasıyla gelir — ne katı bir şablon ne de bir pazarlama iddiasıdır. İşte tam olarak neyi engellediği, bilinçli olarak neye hâlâ izin verdiği ve nedeni.

jekcms'in üretim CSP'si hem script-src hem style-src için 'unsafe-inline' içerir. Bu bilinçli, belgelenmiş bir ödünleşimdir, bir eksiklik değil: Özel Header Script'leri ayarı, site sahiplerinin kendi takip/doğrulama kod parçacıklarını doğrudan sayfaya yapıştırmasına izin verir — bu özellik bozulmadan nonce ile imzalanamaz — ayrıca paketlenmiş temalar ve çekirdek şablonlar bazı yerlerde satır içi <script>/<style> kullanır. unsafe-inline'ı kaldırmak, önce ikisinin de yeniden yazılmasını gerektirir — bu, gizli bir açık değil, açık bir bekleyen iştir.

Fontları Kendi Sunucunuzda Barındırmak İki Direktifi Kaldırır

Google Fonts'tan yüklenen fontlar iki direktif gerektirir: font-src fonts.gstatic.com ve style-src fonts.googleapis.com. jekcms'in paketlenmiş temaları, varsayılan Trends teması dahil, şu anda Inter ve diğer yazı tiplerini kendi sunucusunda barındırmak yerine Google Fonts CDN'inden yüklüyor — CSP'de her iki alan adının da izin listesinde olmasının nedeni bu. Kendi kurulumunuzda kendi sunucunuzda barındırılan fontlara geçerseniz — hem gizlilik hem bir harici istek daha az olması için önerdiğimiz bir şey — politikanızdan her iki alan adını da çıkarıp yalnızca 'self''e güvenebilirsiniz.

Açık img-src Numaralandırması

img-src direktifi, içeriğinizin görsel yüklediği her harici alan adını içermelidir. Yaygın bir hata, herhangi bir HTTPS görsel kaynağına izin vermek için img-src https: ayarlamaktır — bu, görsel-tabanlı saldırılara karşı CSP'nin değerinin çoğunu ortadan kaldırır. jekcms'in kendi varsayılan politikası, keyfi gömülü içerikle uyumluluk için bu kestirmeyi kullanır (img-src 'self' data: https:); bu esnekliğe ihtiyacınız yoksa gerçek görsel kaynaklarınızı açıkça belirtin: img-src 'self' cdn.siteniz.com data:.

Sıkılaştırırken Her Zaman Report-Only Modla Başlayın

jekcms'in varsayılan politikasını kendi siteniz için daraltmayı planlıyorsanız, herhangi bir şeyi uygulamaya koymadan önce bir toplama ucuna işaret eden Content-Security-Policy-Report-Only ile başlayın. 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ır. jekcms şu anda dahili bir ihlal-loglama ucu ile gelmiyor; birine ihtiyacınız varsa report-uri'yi kendi kontrolünüzdeki bir servise yönlendirmeniz gerekir.

jekcms'in Gerçek Üretim CSP'si

Bu, jekcms'in üretimde (Security.php üzerinden) gönderdiği gerçek başlıktır; varsayılan tema seti ile yerleşik Google Analytics/AdSense/GTM ve Facebook Pixel entegrasyonlarını kapsar:

Content-Security-Policy:
 default-src 'self';
 base-uri 'self';
 object-src 'none';
 frame-ancestors 'self';
 script-src 'self' 'unsafe-inline'
  https://cdn.jsdelivr.net https://cdnjs.cloudflare.com
  https://www.googletagmanager.com https://www.google-analytics.com
  https://pagead2.googlesyndication.com https://adservice.google.com
  https://www.googleadservices.com https://connect.facebook.net;
 style-src 'self' 'unsafe-inline'
  https://fonts.googleapis.com https://cdn.jsdelivr.net;
 font-src 'self' https://fonts.gstatic.com;
 img-src 'self' data: https:;
 frame-src 'self' https://googleads.g.doubleclick.net
  https://tpc.googlesyndication.com https://www.google.com
  https://www.facebook.com;
 connect-src 'self' https://www.google-analytics.com
  https://analytics.google.com https://www.googletagmanager.com
  https://pagead2.googlesyndication.com https://adservice.google.com
  https://www.facebook.com;

Orada OLMAYAN'a dikkat edin: 'unsafe-eval'. jekcms'in kendi kodunun veya paketlenmiş üçüncü taraf script'lerinin (Tiptap, Google Analytics/AdSense/GTM, Facebook Pixel) hiçbiri buna ihtiyaç duymuyor, bu yüzden script-src izin listesine hiç eklenmedi.

Direktif Direktif Açıklama

  • default-src 'self' — açıkça listelenmemiş herhangi bir kaynak türü için temel; her şeyi aynı origin'e kısıtlar
  • object-src 'none' — Flash, Java applet'leri ve diğer eklenti içeriğini engeller; modern kullanımı olmayan yaygın XSS vektörleri
  • base-uri 'self' — saldırganların göreli URL'leri kötü niyetli bir alan adına yönlendirmek için base etiketi enjekte etmesini önler
  • frame-ancestors 'self'X-Frame-Options: SAMEORIGIN ile eşdeğerdir ama daha geniş tarayıcı desteğine sahiptir; clickjacking'i önler (jekcms her ikisini de gönderir)

AdSense ve Analytics Alan Adları Neden Orada

Yukarıdaki politikada googlesyndication.com, adservice.google.com, googleadservices.com ve doubleclick.net alan adları, jekcms'in yerleşik Google entegrasyon eklentisinin ayarlarda yapılandırdığınızda AdSense/GA4/GTM kod parçacıklarını enjekte etmesi nedeniyle orada — her jekcms sitesinin reklam çalıştırdığı için değil. Kurulumunuzda AdSense'i hiç etkinleştirmezseniz, özelleştirilmiş bir politikadan bu alan adlarını güvenle çıkarabilirsiniz. Google'ın reklam altyapısı zamanla alt alan adlarını döndürür ve ekler; politikayı kendiniz sıkılaştırırsanız, herhangi bir izin listesini kalıcı saymak yerine ara sıra gözden geçirmeyi bekleyin.

Politikayı Özelleştirirken Yaygın Hatalar

  • Bir kütüphane eval() kullandığı için unsafe-eval eklemek — bunun yerine alternatif bir kütüphane bulun; jekcms'in kendi altyapısı buna ihtiyaç duymaz
  • CDN alan adlarını geniş şekilde beyaz listeye almak (örn. *.cloudflare.com) — saldırganlar aynı CDN'de script barındırabilir
  • AJAX istekleri için connect-src'i unutmak — admin panel işlevselliğini sessizce bozar
  • Yalnızca genel frontend'i test etmek — admin paneli farklı bir script kümesi yükler (editör paketi, medya seçici) ve kendi kontrolüne ihtiyaç duyar

Bugün Durum Gerçekte Nerede

jekcms, üretimde Security.php üzerinden TEK bir global CSP uygular — /admin/ rotaları için ayrı, daha esnek bir politika yoktur ve henüz nonce tabanlı script yükleme yoktur. Koddaki açık bir TODO, nonce geçişini büyük bir refactor olarak işaretliyor: script-src'den 'unsafe-inline' kaldırılmadan önce admin panelindeki ve paketlenmiş temalardaki her satır içi script'in güncellenmesi gerekir. Ayrıca ihlalleri admin panelinde görülebilir bir tabloya kaydeden yerleşik bir CSP ihlal loglaması da yoktur — ihlalleri izlemek isterseniz report-uri'yi kendi toplama ucunuza yönlendirmeniz gerekir. Bunların hiçbiri gizli değil; güvenlik marjıyla Özel Header Script'leri özelliğini veya mevcut temaları bozmamak arasında belgelenmiş, gerekçeli bir ödünleşimdir.

Hemen Sipariş Verin

Tek seferlik ödeme, ömür boyu erişim. Kurulum 30 dakika.

Fiyatlara Bak
  • 30 dakikada kurulum ve yayın
  • 14+ profesyonel tema
  • n8n otomasyon entegrasyonu
  • Otomatik SEO — Sitemap, Schema.org
  • iyzico ödeme entegrasyonu

Yeniliklerden ilk sen haberdar ol

Yeni özellikler, sürüm notları ve CMS rehberleri — ayda birkaç e-posta, spam yok.