İçeriğe atla
FerdiGidenby FerdiSoftBETA v2.4
Güvenlik

Content-Security-Policy'yi Adım Adım Devreye Almak

Content Security Policy'yi Adım Adım Devreye Almak hakkında dağınık bilgiler yerine derli toplu bir kaynak arıyorsanız doğru yerdesiniz. Bu yazı 6 temel noktayı ve bunları bir araya getiren PHP örneğini sade bir dille açıklıyor.

Ferdi GidenFerdi Giden 2 dk okuma 1
Content-Security-Policy'yi Adım Adım Devreye Almak
İçindekiler
  1. Konuya genel bakış
  2. Bilmeniz gereken 6 temel nokta
  3. Örnek kod
  4. Size ne kazandırır?
  5. Son söz

Content-Security-Policy'yi Adım Adım Devreye Almak hakkında dağınık bilgiler yerine derli toplu bir kaynak arıyorsanız doğru yerdesiniz. Bu yazı 6 temel noktayı ve bunları bir araya getiren PHP örneğini sade bir dille açıklıyor.

Konuya genel bakış

Content-Security-Policy (CSP), tarayıcıya sayfada hangi kaynaktan betik, stil ve görsel yüklenebileceğini söyleyen bir HTTP başlığıdır. İyi yapılandırılmış bir CSP, gözden kaçan bir XSS açığında bile saldırganın betiğinin çalışmasını engeller. Aceleyle devreye alınan bir CSP ise sitenin yarısını bozabilir; bu yüzden önce raporlama kipinde başlanır.

Bilmeniz gereken 6 temel nokta

  • Önce Report-Only: Content-Security-Policy-Report-Only başlığı hiçbir şeyi engellemez, yalnız ihlalleri raporlar; birkaç gün boyunca raporları toplayın.
  • Nonce ile satır içi betik: Her istekte yeniden üretilen nonce, yalnızca sizin eklediğiniz satır içi betiklerin çalışmasına izin verir.
  • unsafe-inline'dan kaçının: script-src içinde unsafe-inline kullanmak CSP'nin XSS korumasını büyük ölçüde ortadan kaldırır.
  • frame-ancestors: Sayfanın başka sitelerde çerçeve içinde açılmasını engeller; X-Frame-Options başlığının modern karşılığıdır.
  • Raporlama: report-uri hâlâ yaygın biçimde destekleniyor; yeni tarayıcılar Reporting-Endpoints başlığı ile report-to yönergesini kullanır.
  • Kademeli geçiş: İhlal raporları temizlendiğinde başlığın adını Content-Security-Policy olarak değiştirip engellemeyi başlatın.

Örnek kod

Aşağıdaki PHP örneği, yukarıdaki noktaların gerçek bir kodda nasıl bir araya geldiğini gösteriyor:

// 1. aşama: yalnız raporla, hiçbir şeyi engelleme
$nonce = base64_encode(random_bytes(16));
header("Content-Security-Policy-Report-Only: "
    . "default-src 'self'; "
    . "script-src 'self' 'nonce-$nonce' https://cdn.jsdelivr.net; "
    . "style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; "
    . "font-src 'self' https://fonts.gstatic.com; "
    . "img-src 'self' data: https:; "
    . "frame-ancestors 'self'; base-uri 'self'; form-action 'self'; "
    . "report-uri /csp-rapor");
?>
<script nonce="<?= $nonce ?>">
  // satır içi betik yalnız doğru nonce ile çalışır
</script>

Örnek bilinçli olarak kısa tutuldu; gerçek projede hata yönetimi ve günlükleme gibi katmanlar eklenmelidir.

Kullanıcıdan gelen veriyi ekrana basarken htmlspecialchars() ile kaçışlamak XSS saldırılarının önüne geçer.

Size ne kazandırır?

Content-Security-Policy'yi Adım Adım Devreye Almak konusunu doğru uygulamanın başlıca kazanımları şunlar:

  • Saldırı yüzeyini daraltır ve olası veri sızıntılarının önüne geçer
  • Güvenlik denetimlerinden daha kolay geçen bir kod tabanı sağlar
  • Hataların canlı ortama çıkmadan fark edilmesine yardım eder
  • Kullanıcı güvenini ve marka itibarını korur

Son söz

Content-Security-Policy'yi Adım Adım Devreye Almak, küçük ama düzenli adımlarla ustalaşılan konulardan biri. Özellikle Önce Report-Only ve Kademeli geçiş başlıklarını uygulamaya geçirmek iyi bir başlangıç olur.

İlgili içerikler:

Daha fazla uygulamalı içerik için Akademi derslerine ve blog yazılarına göz atabilirsiniz.

Paylaş:
Ferdi Giden

Yazar

Ferdi Giden @admin
Sistem YöneticisiDoğrulanmış GeliştiriciBeta KullanıcıFerdiSoft KatılımcısıDoğrulanmış ProfilGüvenlik Bilinci

PHP, MySQL ve Tailwind ile kurumsal yazılımlar geliştiriyor; FerdiSoft çatısı altında ERP, WMS ve SaaS çözümleri üretiyor.

Yorumlar 0

Yorum yapmak ve tartışmaya katılmak için giriş yapın. Rozetleriniz yorumlarınızda görünür.

Henüz yorum yok. İlk yorumu siz yazın!

Ücretsiz Teklif Al