HTTP gibi düz metin protokolleri, saldırganın iletilen içeriği okuyabildiği dinleme saldırılarına karşı savunmasız olabilir. Neyse ki Taşıma Katmanı Güvenliği (TLS), trafiği şifreleyebilir ve yakalanırsa saldırganların bu verileri kullanmasını önemli ölçüde zorlaştırabilir.
Ancak saldırganların, şifrelenmiş bağlantıları düz metin HTTP kullanmaya zorlayarak TLS'yi atlatması mümkündür. Bu sorunu gidermek için HTTP Strict Transport Security (HSTS) yanıt üst bilgisi kullanıma sunuldu. Bu üst bilgi, kullanıcının tarayıcısını bir web sitesini yalnızca TLS kullanarak ziyaret etmeye zorlar ve belirli bir süre boyunca düz metin HTTP'ye geri dönmesini engeller.
Lighthouse denetimi neden başarısız olur?
Denetleme, aşağıdaki sorunları HSTS üstbilgisiyle işaretler:
- HSTS üst bilgisi hiç bulunamadıysa.
- Önerilen yönergelerden biri eksikse (
max-age
,includedSubDomains
,preload
) max-age
yönergesinin süresi bir yıldan kısaysa (31536000 saniye).- Üst bilgi ayrıştırılırken bilinmeyen bir yönerge gibi bir söz dizimi hatası varsa.
Güçlü bir HSTS politikası yapılandırma
En uygun HSTS üst bilgisi yapılandırması aşağıdaki gibidir:
Strict-Transport-Security: max-age=63072000; includeSubDomains; preload
max-age
yönü, kullanıcının tarayıcısının bir web sitesini yalnızca TLS kullanarak ziyaret etmek zorunda bırakıldığı süreyi (saniye cinsinden) belirtir. Bu sürenin ardından, web sitesi tarafından sağlanan bir HSTS başlığı yoksa (veya HTTP'den HTTPS'ye geçici yönlendirmeler varsa) siteye tekrar normal HTTP kullanılarak erişilebilir.includeSubDomains
yönergesini ayarlamak, üstbilgiyi başlangıçta gönderen sayfa URL'sinin tüm alt alan adlarında üstbilgiyi zorunlu kılar. Örneğin, google.com tarafından gönderilen veincludeSubDomains
yönergesini içeren bir HSTS üst bilgisinin olması, mail.google.com'da da HSTS üst bilgisinin uygulanmasını sağlar.preload
yönergesini ayarlamak ve alanı HSTS ön yükleme hizmetine göndermek, alanı önceden yüklenmiş HSTS listesini kullanan tarayıcı ikili programlarına (yalnızca Google Chrome değil) derleyecektir.
HSTS başlığını kullanıma sunarken bazı riskler vardır. Şifrelenmemiş bir HTTP bağlantısı gerektiren tüm özellikler, max-age
yönergesinde ayarlanan süre boyunca etkili bir şekilde devre dışı bırakılır. preload
yönergesi uygulanırsa bu süre daha da uzayabilir.
Kullanıma sunmayla ilgili riskleri azaltmak için aşamalı bir yaklaşım önerilir:
Küçük bir
max-age
ile başlayın ve yalnızcaincludeSubDomains
ekleyin (preload
eklemeyin):max-age=3600; includeSubDomains
Bildirilen sorun olmadan bir süre (ör.bir hafta) geçtikten sonra
max-age
değerini artırın. Örneğin:max-age=604800; includeSubDomains
Bu ilk aşama uzun bir süre (ör. üç ay) boyunca başarılı olursa web sitesi ve alt alan adları HSTS ön yükleme listesine ve
preload
yönergesi eklenmelidir.max-age=63072000; includeSubDomains; preload