HTTP güvenlik başlıkları
Web sitenizin HTTP güvenlik başlıklarının doğru yapılandırılıp yapılandırılmadığını kontrol edin.
Başlık kontrolü nasıl çalışır
Araç, girdiğiniz URL'ye normal bir HTTPS GET isteği gönderir ve yanıt başlıklarını okur - her tarayıcının aldığı başlıkların aynısını. Sayfa gövdesinden hiçbir şey ayrıştırılmaz; güvenlik başlıkları tamamen HTTP yanıtında bulunur.
Ardından tarayıcı tarafındaki korumaları yöneten başlıkları ararız: Strict-Transport-Security (HSTS), Content-Security-Policy (CSP), X-Frame-Options, X-Content-Type-Options ve Referrer-Policy. Mevcut her başlık puana katkı sağlar; eksik olanlar ise açık bıraktıkları riskin açıklamasıyla birlikte listelenir.
Kontrol yönlendirmeleri izlediği için sonuç son URL'yi yansıtır. Siteniz HTTP'den HTTPS'e veya kök alan adından www'ye yönlendiriyorsa, gördüğünüz başlıklar hedefe aittir.
Sonuçlar nasıl okunur
Puan hızlı bir yön göstergesidir, bir sertifikasyon değildir. Pratikte önemli olanlar:
- HSTS - tarayıcılara alan adınız için her zaman HTTPS kullanmalarını söyler. En az altı aylık max-age yaygın uygulamadır; includeSubDomains'i yalnızca her alt alan adı HTTPS sunuyorsa ekleyin.
- CSP - XSS'e karşı en güçlü savunmadır, ancak yazması da en zor olandır. Betik kaynaklarını kısıtlayan temel bir politika bile hiç olmamasına göre büyük bir iyileştirmedir.
- X-Content-Type-Options: nosniff ve X-Frame-Options (veya frame-ancestors CSP yönergesi) - MIME sniffing ve clickjacking'e karşı ucuz, tek satırlık korumalar.
Sık karşılaşılan sorunlar
Başlık yapılandırılmış ama eksik olarak bildiriliyor. Uygulamanızın önündeki bir ters proxy veya CDN, başlıkları kaldırabilir veya geçersiz kılabilir. Hangi katmanın düşürdüğünü bulmak için yanıtı curl -I ile doğrudan origin'e ve genel URL'ye karşı karşılaştırın.
CSP mevcut ama etkisiz. Content-Security-Policy-Report-Only ihlalleri yalnızca günlüğe kaydeder, hiçbir şeyi engellemez. Test için yararlıdır ancak koruma sağlamaz - rapor günlüğünüz temizlendiğinde zorlayıcı başlığa geçin.
Farklı rotalar farklı başlıklar döndürüyor. Uygulama ara katmanında (middleware) ayarlanan başlıklar, web sunucusunun doğrudan sunduğu statik dosyalara veya hata sayfalarına uygulanmayabilir. Bir statik dosya URL'sini ve bir 404 sayfasını da test edin.
Sıkça sorulan sorular
Her web sitesinde hangi güvenlik başlıkları olmalı?
Makul bir temel: Strict-Transport-Security, Content-Security-Policy, X-Content-Type-Options: nosniff, Referrer-Policy ve X-Frame-Options veya CSP frame-ancestors ile çerçeve koruması. API'ler ayrıca hassas yanıtlarda Cache-Control: no-store'dan yararlanır.
X-XSS-Protection başlığı hâlâ gerekli mi?
Hayır. Modern tarayıcılar bu başlığın yönettiği XSS denetleyicisini kaldırdı; eski tarayıcılarda ise başlık güvenlik açıklarına bile yol açabiliyordu. Bunun yerine sıkı bir Content-Security-Policy kullanın.
HSTS ilk ziyareti korur mu?
Tek başına korumaz - tarayıcı kuralı yalnızca ilk HTTPS yanıtından öğrenir. İlk ziyareti kapsamak için alan adınızı HSTS ön yükleme listesine (hstspreload.org) gönderin ve preload yönergesini includeSubDomains ile birlikte kullanın.
Yanlış bir başlık sitemi bozabilir mi?
Evet, iki klasik durum: aşırı sıkı bir CSP kendi betiklerinizi veya satır içi stillerinizi engeller; includeSubDomains'li HSTS ise hâlâ düz HTTP üzerinde çalışan tüm alt alan adlarını bozar. CSP'yi önce report-only modunda yayına alın ve HSTS'e kısa bir max-age ile başlayın.
Başlık değişikliklerini sürekli izleyin
ePulz.io bir başlık değiştiğinde sizi uyarır (örneğin CSP'yi yanlışlıkla kaldıran bir deploy sonrası).
ePulz.io ile başlayın →Bu araç hakkında
Güvenlik başlıkları, tarayıcıya ziyaretçilerinizi nasıl koruyacağını söyler. Bu denetim; HSTS, Content-Security-Policy, X-Frame-Options, X-Content-Type-Options ve Referrer-Policy başlıklarının gerçekten mevcut olup olmadığını gösterir ve sonucu puanlar; böylece bir dağıtımdan sonra clickjacking ve MIME-sniffing açıklarını yakalayabilirsiniz.