İletişim

HSTS Nedir?

Kısa tanım

HSTS (HTTP Strict Transport Security), bir sitenin Strict-Transport-Security yanıt başlığıyla tarayıcıya kendisine belirli bir süre boyunca yalnızca HTTPS üzerinden bağlanmasını bildirdiği güvenlik mekanizmasıdır. Tarayıcı bu süre içinde http:// adreslerini istek göndermeden https:// olarak açar ve sertifika hatalarında kullanıcının uyarıyı geçmesine izin vermez. Böylece ilk HTTP isteğini hedef alan saldırıların önü kesilir.

Diğer adları: HTTP Strict Transport Security, Strict-Transport-Security, HSTS başlığı, HSTS preload

HSTS başlığını alan tarayıcının sonraki ziyaretlerde http adresini ağa gitmeden https'e yükselttiğini gösteren yapılandırma ve akış şeması

Yönlendirme yetmiyorsa neden?

Çoğu site HTTP isteklerini 301 yönlendirmesi ile HTTPS'e gönderir. Ancak kullanıcı adres çubuğuna yalnızca alan adını yazdığında ya da eski bir HTTP bağlantısına tıkladığında, ilk istek şifresiz gider. Aynı ağdaki bir saldırgan bu ilk isteği yakalayıp kullanıcıyı HTTPS'e hiç yönlendirmeden sahte ya da şifresiz bir sürümde tutabilir (SSL stripping olarak bilinen yöntem). HSTS, tarayıcının bu ilk adımı kendi içinde atlamasını sağlar.

Tarayıcı HSTS başlığını bir kez HTTPS üzerinden aldıktan sonra, belirtilen süre boyunca o alan adına giden her http:// isteğini ağa çıkmadan https://'e çevirir. Chrome geliştirici araçlarında bu durum "307 Internal Redirect" olarak görünür; sunucu tarafında böyle bir yanıt yoktur. Ayrıca sertifika hatası olduğunda tarayıcı "yine de devam et" seçeneğini sunmaz.

Başlığın yönergeleri

Strict-Transport-Security: max-age=63072000; includeSubDomains; preload
  • max-age: Kuralın saniye cinsinden geçerlilik süresi. Her yanıtla yenilenir. max-age=0 kuralı tarayıcıdan siler.
  • includeSubDomains: Kural tüm alt alan adlarını da kapsar.
  • preload: Alan adının tarayıcılara gömülü HSTS listesine eklenmeye hazır olduğunu belirtir; tek başına bir şey yapmaz, başvuru ayrıca yapılır.

Başlık yalnızca HTTPS yanıtlarında anlam taşır; HTTP üzerinden gönderilen bir HSTS başlığını tarayıcılar standart gereği yok sayar. Bu yüzden HSTS, HTTP'den HTTPS'e yönlendirmenin yerini almaz; ona eklenen bir katmandır ve güvenlik başlıkları setinin temel parçalarından biridir.

İlk ziyaret sorunu ve preload listesi

HSTS'in zayıf noktası, tarayıcının kuralı öğrenebilmesi için siteye en az bir kez HTTPS ile ulaşmış olması gerektiğidir. Bu boşluğu preload listesi kapatır: Chrome'un yönettiği ve diğer büyük tarayıcıların da kullandığı bu liste, tarayıcının içine gömülü gelir. Listeye girmenin koşulları hstspreload.org üzerinde yayımlanır: geçerli bir sertifika, aynı host üzerinde HTTP'den HTTPS'e yönlendirme, tüm alt alan adlarının HTTPS ile sunulması ve en az bir yıllık (31536000 saniye) max-age ile birlikte includeSubDomains ve preload yönergeleri.

Geri alınması zor bir karar

HSTS'in en büyük riski, yanlış kapsamla açılmasıdır. includeSubDomains eklendiğinde yalnızca HTTP ile çalışan eski bir alt alan adı (örneğin şirket içi bir panel, bir yazıcı arayüzü ya da eski bir e-posta yönetim sayfası) tarayıcılar için anında erişilemez hâle gelir. Preload listesinde bu etki herkese açık olmayan iç alt alan adlarını da kapsar. Listeden çıkmak mümkündür ama değişikliğin tarayıcı güncellemeleriyle kullanıcılara ulaşması aylar sürer.

Güvenli bir devreye alma şöyle ilerler:

  1. Tüm alt alan adlarının HTTPS ile çalıştığını envanter çıkararak doğrulayın.
  2. max-age=300 gibi birkaç dakikalık bir süreyle başlayın, sorun yoksa bir haftaya, sonra bir aya çıkın.
  3. Ardından includeSubDomains ekleyin ve aynı kademeli artışı tekrarlayın.
  4. Ancak tüm bunlar aylarca sorunsuz çalıştıysa en az bir yıllık süre ve preload ile listeye başvurun.

SEO Analiz Aracı, HTTPS kontrollerinin parçası olarak HSTS başlığının bulunup bulunmadığını raporlar.

İlgili terimler

← Sözlüğe dön