HTTP gibi düz metin protokolleri, saldırganın iletilen içeriği okuyabildiği dinleme saldırılarına karşı savunmasız olabilir. Taşıma Katmanı Güvenliği (TLS), trafiği şifreleyebilir ve saldırganların bu verileri ele geçirmesi durumunda kullanmasını önemli ölçüde zorlaştırabilir.
Ancak saldırganlar, şifrelenmiş bağlantıları düz metin HTTP kullanmaya zorlayarak TLS'yi atlatabilir. Bu sorunu gidermek için HTTP Strict Transport Security (HSTS) yanıt başlığını kullanabilirsiniz. HSTS, kullanıcının tarayıcısını TLS kullanarak bir web sitesini ziyaret etmeye zorlar ve belirli bir süre boyunca düz metin HTTP'ye geri dönmesine izin vermez.
Lighthouse denetimi neden başarısız olur?
Denetleme, HSTS üstbilgisiyle ilgili aşağıdaki sorunları işaretler:
- Hiç HSTS üstbilgisi bulunmuyorsa.
- Önerilen yönergelerden biri eksikse (
max-age,includeSubDomains,preload) max-ageyönergesinin süresi bir yıldan kısaysa (31536000 saniyeden az).- Üst bilgi ayrıştırılırken söz dizimi hatası varsa (ör. bilinmeyen bir yönerge).
Güçlü bir HSTS politikası yapılandırma
En uygun HSTS üstbilgisi yapılandırması aşağıdaki gibidir:
Strict-Transport-Security: max-age=63072000; includeSubDomains; preload
max-ageyönergesi, kullanıcının tarayıcısının yalnızca TLS kullanan bir web sitesini ziyaret etmeye zorlandığı süreyi (saniye cinsinden) belirtir. Süre dolduktan sonra, web sitesi tarafından HSTS üstbilgisi sağlanmıyorsa (veya HTTP'den HTTPS'ye geçici yönlendirmeler yoksa) kullanıcılar siteye tekrar düz HTTP ile ulaşabilir.includeSubDomainsyönergesinin ayarlanması, başlangıçta üstbilgiyi gönderen sayfa URL'sinin tüm alt alan adlarında üstbilginin zorunlu kılınmasını sağlar. Örneğin,google.comtarafından gönderilen veincludeSubDomainsyönergesini içeren bir HSTS üstbilgisinin olması,mail.google.comüzerinde HSTS üstbilgisini zorunlu kılar.preloadyönergesinin ayarlanması ve alanın HSTS ön yükleme hizmetine gönderilmesi, alanı önceden yüklenmiş HSTS listesini kullanan tarayıcı ikililerine derler. Bu durum Google Chrome'un yanı sıra diğer tarayıcılar için de geçerlidir.
HSTS başlığı kullanıma sunulurken bazı riskler vardır. Şifrelenmemiş HTTP bağlantısı gerektiren tüm özellikler, max-age yönergesinde ayarlanan süre boyunca kullanılamaz. preload yönergesi uygulanırsa bu süre daha da uzayabilir.
Kullanıma sunmayla ilişkili riskleri azaltmak için aşamalı bir yaklaşım önerilir:
Küçük bir
max-ageile başlayın ve yalnızcaincludeSubDomainsekleyin (preloadeklemeyin):max-age=3600; includeSubDomainsBildirilen sorunların olmadığı bir bekleme süresinden (ör. bir hafta) sonra
max-agedeğerini yükseltin. Örneğin:max-age=604800; includeSubDomainsBu ilk aşama uzun bir süre (ör. üç ay) boyunca başarılı olursa web sitesi ve alt alan adları HSTS önceden yükleme listesine eklenmeli ve
preloadyönergesi eklenmelidir.max-age=63072000; includeSubDomains; preload