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
- Content Security Policy: gerçekten koruyan bir politika yazmakXSS'i gerçekten durduran bir Content-Security-Policy yaz: unsafe-inline ve unsafe-eval neden zayıflatır, nonce ve strict-dynamic, başlangıç politikası.
- HTTPS ve HSTS: düz HTTP açığını kapatmakHer site neden HTTPS'e, HTTP'den 301 yönlendirmesine ve Strict-Transport-Security header'ına (CWE-319) ihtiyaç duyar; doğru max-age ve karışık içerik.
- Clickjacking: görünmez bir frame üzerinden çalınan tıklamalarClickjacking'in (CWE-1021) tıklamaları çalmak için sayfanı görünmez bir frame'de nasıl sakladığı ve bunu önleyen iki header — CSP frame-ancestors ve X-Frame-Options.
- Kanıtını gösteren web sitesi güvenlik taramasıPasif web sitesi güvenlik taraması: HTTPS ve HSTS, CSP, cookie'ler, karışık içerik, açıkta kalan anahtarlar ve eski JavaScript kütüphaneleri — kanıtıyla birlikte.
Güncellendi 2026-10-11