Her eksik için çözümüyle güvenlik header kontrolü

HTTP yanıt header'ları tek bir hatanın ne kadara mal olacağına karar verir: enjekte edilen script çalışır mı, sayfa frame'e alınabilir mi, tarayıcı hiç düz HTTP'ye döner mi. RepoVerse bunları canlı siteden okur ve yalnızca var olup olmadıklarını değil, arkalarındaki politikayı da değerlendirir.

Okuduğu header'lar

Her header incelenen her sayfada kontrol edilir; yalnızca ana sayfada olan bir politika fark edilir.

  • Strict-Transport-Security — HTTPS'te mevcut, max-age en az 180 gün
  • Content-Security-Policy — uygulanıyor (yalnızca rapor değil) ve script'leri kısıtlıyor
  • X-Frame-Options veya CSP frame-ancestors — sayfa başka siteler tarafından frame'e alınamıyor
  • X-Content-Type-Options: nosniff — içerik türü tahmini yok
  • Referrer-Policy — tam URL'ler başka sitelere sızmıyor
  • Server, X-Powered-By ve generator etiketleri — sürüm numarası ilan edilmiyor

CSP yalnızca bulunmaz, değerlendirilir

'unsafe-inline' script'lere, 'unsafe-eval'e veya *, https:, data: gibi script kaynaklarına izin veren bir Content-Security-Policy var gibi görünür ama az korur. RepoVerse politikayı bir tarayıcı gibi ayrıştırır: nonce veya hash 'unsafe-inline'ı iptal eder, nonce ile birlikte 'strict-dynamic' host kaynaklarını iptal eder ve script-src ya da default-src içermeyen bir politika script'leri hiç kısıtlamaz. Eksik object-src 'none' ve base-uri ayrıca raporlanır.

Kopyala-yapıştır çözümler

Her bulgu gönderilmesi gereken header'la biter; örneğin Strict-Transport-Security: max-age=31536000; includeSubDomains ya da default-src 'self'; object-src 'none'; base-uri 'self'; frame-ancestors 'self' gibi bir başlangıç politikası. Sitenin şu an gönderdiği değer yanında gösterilir; deploy etmeden önce farkı görürsün.

Neleri kontrol eder

  • OrtaHSTS header'ı yok

    `Strict-Transport-Security` olmadan tarayıcı, yazılan adresler ve eski linkler için hâlâ düz HTTP'yi dener; bu da ilk istekte SSL-stripping saldırısına alan bırakır.

    web sitesi · CWE-319

  • DüşükHSTS süresi kısa

    Tarayıcı yalnız-HTTPS kuralını çabuk unutur; max-age dolduktan sonra geri gelen ziyaretçi ilk isteğinde yine açıkta kalır.

    web sitesi · CWE-319

  • OrtaContent-Security-Policy yok

    Herhangi bir sayfada injection hatası varsa enjekte edilen script'i durduracak hiçbir şey yok — bir XSS'in neler yapabileceğini sınırlayan katman CSP'dir.

    web sitesi · CWE-693

  • DüşükContent-Security-Policy yalnızca raporluyor, uygulanmıyor

    Report-only politika ihlalleri kaydeder ama hiçbir şeyi engellemez; henüz koruma sağlamaz.

    web sitesi · CWE-693

  • OrtaCSP satır içi script'lere izin veriyor

    `script-src` içindeki `'unsafe-inline'`, enjekte edilen `<script>` etiketlerinin ve event handler'ların çalışmasına izin verir — CSP'nin asıl engellemek için var olduğu şey.

    web sitesi · CWE-79

  • DüşükCSP eval'e izin veriyor

    `'unsafe-eval'`, string'lerin `eval`, `new Function` ve string timer'larla koda dönüşmesine izin verir; bu da bazı injection hatalarını script çalıştırmaya çevirir.

    web sitesi · CWE-95

  • OrtaCSP script'lerin her yerden yüklenmesine izin veriyor

    `*`, `https:`, `http:` veya `data:` içeren bir `script-src` her host'tan script'e izin verir; etiket enjekte edebilen saldırgan kendi dosyasını yükler ve politika buna izin verir.

    web sitesi · CWE-693

  • DüşükCSP eklentileri veya base URL'yi açık bırakıyor

    `object-src 'none'` olmadan eski eklenti içeriği hâlâ çalışabilir; `base-uri` olmadan enjekte edilen bir `<base>` etiketi sayfadaki her göreli script URL'sini başka yere yönlendirebilir.

    web sitesi · CWE-693

  • OrtaSayfalar herhangi bir site tarafından frame içine alınabiliyor

    Başka bir site sayfalarını görünmez bir frame'de açıp giriş yapmış ziyaretçiyi göremediği butonlara tıklatabilir — ayarları değiştirmek, ödeme onaylamak.

    web sitesi · CWE-1021

  • DüşükX-Content-Type-Options header'ı yok

    Tarayıcılar yanıtın türünü içeriğinden tahmin edebilir; metin olarak sunulan yüklenmiş bir dosya script ya da stil olarak çalıştırılabilir.

    web sitesi · CWE-693

  • DüşükReferrer-Policy header'ı yok

    Güncel tarayıcılar güvenli bir varsayılan kullanır ama eskiler, sorgu dizesindeki token ve ID'ler dahil tam URL'yi linklediğin her siteye gönderir.

    web sitesi · CWE-200

  • DüşükSunucu yazılımı ve sürümü ilan ediliyor

    `Server`, `X-Powered-By` veya generator etiketindeki sürüm numarası, saldırgana önce hangi herkese açık exploit'leri deneyeceğini söyler.

    web sitesi · CWE-200

Sorular

En önemli güvenlik header'ları hangileri?
Strict-Transport-Security ve script'leri kısıtlayan bir Content-Security-Policy; ardından frame koruması (frame-ancestors veya X-Frame-Options) ve X-Content-Type-Options: nosniff. Tarayıcılar artık güvenli bir varsayılan kullandığı için Referrer-Policy daha az önemli.
CSP varsa X-Frame-Options hâlâ gerekli mi?
Modern tarayıcılarda CSP frame-ancestors onun yerini alır. Ayrıca X-Frame-Options: DENY göndermek hiçbir şeye mal olmaz ve eski tarayıcıları kapsar. frame-ancestors yalnızca header'da çalışır, meta etiketinde çalışmaz.
CSP'm varken neden raporlanıyor?
Çünkü satır içi script'lere, eval'e veya her host'tan script'e izin veriyor — enjekte edilen bir script'in tam ihtiyaç duyduğu şeyler — ya da yalnızca rapor modunda olduğu için henüz hiçbir şeyi uygulamıyor.

İlgili

Güncellendi 2026-10-11