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. 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.

Browser Support

  • Chrome: 4.
  • Edge: 12.
  • Firefox: 4.
  • Safari: 7.

Source

Lighthouse denetimi neden başarısız olur?

HSTS yanıt üstbilgisinin bulunmadığına dair Lighthouse raporu uyarısı.

Denetleme, HSTS üstbilgisiyle ilgili aşağıdaki sorunları işaretler:

  • Hiç HSTS üstbilgisi bulunmuyorsa.
  • Önerilen yönergelerden biri eksikse (max-age, includeSubDomains, preload)
  • max-age yö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-age yö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.
  • includeSubDomains yö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.com tarafından gönderilen ve includeSubDomains yönergesini içeren bir HSTS üstbilgisinin olması, mail.google.com üzerinde HSTS üstbilgisini zorunlu kılar.
  • preload yö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:

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

    max-age=3600; includeSubDomains
    
  2. Bildirilen sorunların olmadığı bir bekleme süresinden (ör. bir hafta) sonra max-age değerini yükseltin. Ö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 önceden yükleme listesine eklenmeli ve preload yönergesi eklenmelidir.

    max-age=63072000; includeSubDomains; preload