Güçlü bir HSTS politikası kullanın

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?

HSTS yanıt başlığı bulunamadığına dair Lighthouse denetim uyarısı.
Lighthouse raporu, HSTS yanıt başlığı bulunamadığı konusunda uyarıyor.

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 ve includeSubDomains 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:

  1. Küçük bir max-age ile başlayın ve yalnızca includeSubDomains ekleyin (preload eklemeyin):

    max-age=3600; includeSubDomains
    
  2. 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
    
  3. 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