Güvenlik başlıkları neden önemli?
Bir ziyaretçi sitenizi açtığında sunucunuz sayfayla birlikte görünmeyen bir dizi talimat da gönderir. Bunlara HTTP yanıt başlıkları denir. Güvenlik başlıkları, tarayıcıya sayfanızı nasıl koruyacağını söyler: yalnızca HTTPS ile mi açılsın, başka bir sitenin içine gömülebilir mi, hangi kaynaklardan script yüklenebilir?
Bu başlıklar eksik olduğunda kodunuzda hiçbir hata olmasa bile siteniz clickjacking, SSL stripping ve XSS gibi saldırılara karşı daha savunmasız kalır. İyi haber şu: çoğu başlık sunucu veya barındırma ayarına eklenen tek bir satırdır.
Kontrol ettiğimiz başlıklar
Strict-Transport-Security (HSTS)
Tarayıcıya sitenizi belirli bir süre boyunca yalnızca HTTPS ile açmasını söyler. HSTS yoksa ziyaretçinin ilk isteği şifresiz gidebilir ve araya giren biri bağlantıyı HTTP'ye düşürebilir. Önerilen değer: max-age=63072000; includeSubDomains. Tüm alt alan adlarınız HTTPS sunmuyorsa includeSubDomains kısmını çıkarın.
Content-Security-Policy (CSP)
Sayfanızda hangi kaynaklardan script, stil ve görsel yüklenebileceğini belirler. Bir XSS açığı olsa bile saldırganın kendi script'ini çalıştırmasını büyük ölçüde engeller. En güçlü ama en dikkatli eklenmesi gereken başlıktır: önce Content-Security-Policy-Report-Only adıyla ekleyip tarayıcı konsolundaki ihlallere göre uyarlayın. 'unsafe-inline' içeren bir script-src politikası korumanın çoğunu boşa çıkarır.
X-Frame-Options / frame-ancestors
Sayfanızın başka bir sitenin iframe'i içine gömülmesini engeller. Saldırgan sayfanızı görünmez bir çerçeveye koyup kullanıcıyı farkında olmadan düğmelere tıklatabilir (clickjacking). X-Frame-Options: DENY veya CSP içinde frame-ancestors 'none' yeterlidir.
X-Content-Type-Options
nosniff değeri, tarayıcının dosya türünü tahmin etmesini engeller. Böylece yüklenen bir metin dosyası script gibi çalıştırılamaz.
Referrer-Policy ve Permissions-Policy
Referrer-Policy, ziyaretçi başka bir siteye geçtiğinde adres çubuğundaki bilginin ne kadarının paylaşılacağını belirler; strict-origin-when-cross-origin dengeli bir seçimdir. Permissions-Policy ise kamera, mikrofon ve konum gibi yetenekleri kullanmadığınız durumda kapatmanızı sağlar.
Sunucu sürüm bilgisi
Server: nginx/1.18.0 gibi sürüm numarası içeren başlıklar, saldırgana o sürümün bilinen açıklarını hedefleme kolaylığı verir. Nginx'te server_tokens off;, Apache'de ServerTokens Prod ile gizleyebilirsiniz.
Puan nasıl hesaplanıyor?
Her kontrolün bir önem derecesi var: kritik, yüksek, orta veya düşük. Puan, ölçülebilen kontrollerin ağırlıkları üzerinden hesaplanır; eksik bir kritik başlık düşük önemli bir başlıktan çok daha fazla puan götürür. Bu sayfadaki puan yalnızca başlıkları kapsar. TLS sertifikası, DNS (SPF, DMARC, DNSSEC), çerez bayrakları ve kara liste kontrollerini de içeren genel puan için tam taramayı kullanın.
Sık sorulan sorular
Bu test siteme zarar verir mi?
Hayır. Araç, sıradan bir ziyaretçinin tarayıcısı gibi ana sayfanıza tek bir istek gönderir ve yalnızca yanıt başlıklarını okur. Saldırı denemesi veya gizli yol taraması yapmaz. Aynı site için sonuç bir saat önbellekte tutulur.
Content-Security-Policy eklemek sitemi bozar mı?
Doğrudan uygulanırsa bozabilir: satır içi script, yazı tipi veya analitik araçlar engellenebilir. Önce Report-Only modunda deneyip ihlallere göre politikayı uyarlamanızı öneririz.
Başlıkları nereye ekliyorum?
Barındırma türünüze göre değişir: Nginx'te add_header, Apache'de .htaccess içinde Header set, Vercel ve Netlify'da yapılandırma dosyası, Cloudflare kullanıyorsanız Transform Rules. İsterseniz bu düzeltmeyi sizin için biz yapabiliriz.
Neden yalnızca 3 bulgu görüyorum?
Sizi en önemli sorunlarla başlatmak için bulgular önem sırasına göre listelenir ve ilk üçü gösterilir. Tüm bulgular, düzeltme kodları ve PDF rapor ücretsiz tam taramada yer alır.