HSTS (HTTP Strict Transport Security) Nedir?
HSTS, açılımı HTTP Strict Transport Security olan ve bir web sunucusunun tarayıcılara ilettiği güvenlik politikası başlığıdır. Bu başlık, bir alan adına yapılacak tüm bağlantıların belirli bir süre boyunca yalnızca HTTPS üzerinden kurulmasını zorunlu kılar. Kullanıcı adres çubuğuna şifresiz bir adres yazsa veya şifresiz bir bağlantıya tıklasa bile tarayıcı, ağ üzerinden istek göndermeden önce bağlantıyı HTTPS'e yükseltir. Mekanizma, web güvenliğinde protokol düşürme olarak adlandırılan saldırı sınıfına karşı koruma sağlamak amacıyla geliştirilmiş ve RFC 6797 numaralı standartta tanımlanmıştır.
HSTS Başlığının Çalışma Mantığı
Bir sunucu, HTTPS üzerinden verdiği yanıtlara Strict-Transport-Security başlığını ekler. Tarayıcı bu başlığı yalnızca güvenli bir bağlantı üzerinden aldığında dikkate alır; şifresiz bir yanıtla iletilen aynı başlık yok sayılır. Başlık, alan adına özgü bir politika kaydı olarak tarayıcının yerel depolama alanına yazılır ve burada belirtilen süre boyunca geçerli kalır.
Politika kaydedildikten sonra tarayıcı, söz konusu alan adına yönelik her isteği kendi içinde HTTPS'e dönüştürür. Bu dönüşüm, ağ katmanına çıkmadan önce gerçekleştiği için şifresiz bir isteğin ağda görünmesi mümkün olmaz. Kullanıcı tarafında ise genellikle adres çubuğunda küçük bir iç yönlendirme gerçekleşir; ancak bu işlem, sunucudan gelen bir yanıt değil, tarayıcının uyguladığı yerel bir kuraldır.
Politika yalnızca başlığı gönderen alan adı için geçerlidir. Alt alan adlarının da kapsama alınması isteniyorsa bu durum başlık içinde ayrıca belirtilmelidir. Aksi hâlde farklı bir alt alan adına yapılan istekler bu kuraldan etkilenmez.
HSTS ile HTTP Yönlendirmesi Arasındaki Temel Fark
Sunucu tarafında yapılandırılan klasik bir HTTP'den HTTPS'e yönlendirmesi, ilk isteğin yine şifresiz olarak gönderilmesi anlamına gelir. Tarayıcı önce http:// adresine bağlanır, sunucudan gelen yönlendirme yanıtını alır ve ardından şifreli adrese geçer. Bu ilk adım, aradaki bir ağ bileşeninin isteği yakalaması ve kullanıcıyı şifresiz bir kopya siteye yönlendirmesi için teorik bir aralık bırakır.
HSTS bu aralığı ortadan kaldırır; çünkü tarayıcı, politika kaydı geçerli olduğu sürece şifresiz bağlantı denemesi yapmaz. Dolayısıyla iki yöntem birbirinin alternatifi değil, tamamlayıcısıdır. Sunucu tarafı yönlendirmesi, politikayı henüz kaydetmemiş tarayıcılar için yedek bir güvence işlevi görürken HSTS, politika kaydedildikten sonraki tüm trafiği baştan güvenli hâle getirir.
HSTS Yanıt Başlığının Bileşenleri
Başlık, noktalı virgülle ayrılan birkaç direktiften oluşur. Bu direktiflerin doğru sıralanması ve eksiksiz tanımlanması, politikanın beklenen şekilde uygulanması için gereklidir.
max-age Direktifi
Tarayıcının politikayı kaç saniye boyunca hatırlayacağını belirtir. Yalnızca sayısal bir değer kabul eder; değerin sıfır olması, daha önce kaydedilmiş politikanın sona erdirilmesi talebi anlamına gelir. Yaygın uygulamada 31.536.000 saniye, yani yaklaşık bir yıllık bir süre tercih edilir. Daha kısa sürelerle başlanıp kademeli olarak artırılması, yapılandırma hatalarının etkisini sınırlamaya yardımcı olur.
includeSubDomains Direktifi
Politikanın, ana alan adının yanı sıra tüm alt alan adlarına da uygulanmasını sağlar. Bu direktif etkinleştirildiğinde, kapsamdaki her alt alan adının geçerli bir sertifikayla HTTPS hizmeti sunması gerekir. Aksi hâlde erişilemez duruma gelen alt alan adları oluşabilir. Bu nedenle direktifin eklenmesinden önce alan adı envanterinin gözden geçirilmesi önem taşır.
preload Direktifi
Alan adının, tarayıcılarla birlikte dağıtılan ön yükleme listesine alınması talebini ifade eder. Bu direktif tek başına listeye kaydolmayı sağlamaz; ilgili listeye başvuru yapılması gerekir. Teknik olarak bir niyet beyanı niteliğindedir.
Tarayıcı Ön Yükleme Listesi
HSTS'nin kullanıcı tarafındaki en belirgin sınırı, ilk ziyaretin korunmamasıdır. Kullanıcı bir alan adına ilk kez bağlandığında henüz kayıtlı bir politika bulunmadığı için ilk istek şifresiz gönderilebilir. Bu boşluğu kapatmak amacıyla, alan adlarının tarayıcı yazılımlarının içine gömülü bir listeye eklenmesi yöntemi geliştirilmiştir.
Bu liste merkezî olarak yönetilir ve büyük tarayıcı geliştiricileri tarafından dağıtılan sürümlere dâhil edilir. Listeye kaydedilen bir alan adı için tarayıcı, kullanıcı daha önce hiç ziyaret etmemiş olsa bile bağlantıyı doğrudan HTTPS üzerinden kurar. Listeye kabul için alan adının geçerli bir sertifikayla hizmet vermesi, tüm alt alan adlarını kapsayan bir politikaya sahip olması ve uzun bir max-age değeri tanımlaması beklenir.
Ön yükleme listesine girmek kalıcı bir taahhüt niteliği taşır. Kaydın kaldırılması, tarayıcı sürümlerinin güncellenmesini gerektirdiği için aylar sürebilir. Bu nedenle başvuru öncesinde kapsamdaki tüm alt alan adlarının HTTPS altyapısının eksiksiz olduğundan emin olunmalıdır.
SSL Sıyırma Saldırılarına Karşı Koruma
SSL sıyırma, kullanıcı ile sunucu arasına giren bir ağ bileşeninin şifreli trafiği şifresiz hâle dönüştürmeye çalıştığı bir saldırı yöntemidir. Saldırgan, kullanıcının şifresiz bağlantı isteğini yakalar ve sunucuyla kendi arasında şifresiz bir oturum kurar; kullanıcıya ise bağlantının güvenli olduğu izlenimini verebilir.
HSTS etkin olduğunda bu senaryo büyük ölçüde etkisiz kalır. Tarayıcı, politika kaydı bulunan bir alan adına hiçbir koşulda şifresiz istek göndermediği için araya giren bir bileşenin yönlendirme yanıtı üretmesi bir işe yaramaz. Kullanıcı şifresiz bir bağlantıya tıklasa dahi tarayıcı, isteği göndermeden önce HTTPS'e yükseltir ve sertifika doğrulaması başarısız olursa bağlantıyı keser.
HSTS'nin Sağladığı Güvenlik Kazanımları
HSTS'nin katkısı birkaç başlıkta özetlenebilir:
- Protokol düşürme girişimlerinin etkisini ortadan kaldırır.
- Oturum çerezlerinin şifresiz bağlantı üzerinden iletilme olasılığını azaltır.
- İlk istekte oluşabilecek yönlendirme kaynaklı gecikmeyi ortadan kaldırarak sayfa yüklenme sürecini sadeleştirir.
- Sunucu tarafında gereksiz yönlendirme kuralı ihtiyacını azaltır.
- Alan adının güvenlik yapılandırmasının tarayıcı düzeyinde tutarlı uygulanmasını sağlar.
Bu kazanımların tamamı, HTTPS altyapısının ve sertifika zincirinin doğru yapılandırılmış olması koşuluna bağlıdır. Sertifika sorunları olan bir alan adında HSTS, kullanıcıların siteye erişimini tamamen engelleyebilir.
Sunucu Yazılımlarında HSTS Yapılandırması
HSTS, uygulama kodunda değil sunucu katmanında tanımlanan bir yanıt başlığıdır. Yaygın sunucu yazılımlarında yapılandırma yöntemleri birbirine benzer.
Apache
Sanal ana makine tanımına şu satır eklenir: Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains". Başlığın hata yanıtlarında da gönderilmesi için always anahtar sözcüğünün kullanılması önerilir. Modülün etkin olduğundan emin olunmalıdır.
Nginx
Sunucu bloğu içine şu satır yazılır: add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;. always parametresi, başlığın yalnızca başarılı yanıtlarda değil tüm yanıtlarda iletilmesini sağlar.
IIS
Yapılandırma dosyasındaki özel başlıklar bölümüne Strict-Transport-Security adı ve değeri eklenir. Değişikliğin ardından uygulama havuzunun yeniden başlatılması gerekebilir.
Ters vekil sunucu veya içerik dağıtım ağı kullanılan yapılarda başlığın doğru katmanda eklendiği doğrulanmalıdır. Aksi hâlde başlık, son kullanıcıya ulaşmayabilir.
Devreye Alma Sürecinde Dikkat Edilmesi Gereken Noktalar
Politikanın geri alınması zor olduğu için kademeli bir geçiş yaklaşımı benimsenmelidir. İlk aşamada yalnızca ana alan adını kapsayan kısa süreli bir max-age değeri tanımlanabilir; altyapının sorunsuz çalıştığı gözlemlendikten sonra süre artırılabilir. Alt alan adlarının kapsama alınması ise ayrı bir aşama olarak değerlendirilmelidir.
Alan adı envanterinin çıkarılması, hangi alt alan adlarının hangi hizmetleri sunduğunun belirlenmesi ve her birinin geçerli bir sertifikaya sahip olduğunun doğrulanması sürecin temel adımlarıdır. Geliştirme, test veya geçici amaçlarla kullanılan alt alan adları da politika kapsamına girdiğinde erişilemez duruma gelebilir.
Başlığın yalnızca HTTPS üzerinden gönderilmesi gerektiği unutulmamalıdır. Şifresiz bir yanıtla iletilen başlık tarayıcılar tarafından yok sayılır. Ayrıca sertifikanın süresi dolduğunda veya zincir eksik olduğunda kullanıcıların karşılaşacağı uyarıların, politika nedeniyle atlanamayacağı göz önünde bulundurulmalıdır.
HSTS Politikasının Kaldırılması
Bir alan adı için HSTS uygulamasını sona erdirmek isteyen yönetici, başlığı max-age değeri sıfır olacak şekilde göndermelidir. Ancak bu işlem anında sonuç vermez; tarayıcılar daha önce kaydettikleri politikayı, tanımlanmış süre dolana kadar uygulamaya devam eder. Ön yükleme listesine kayıtlı alan adlarında ise süreç daha uzundur ve tarayıcı sürümlerinin güncellenmesini beklemeyi gerektirir.
Bu nedenle HSTS, geri dönüşü kolay olmayan bir yapılandırma olarak değerlendirilmelidir. Politikayı etkinleştirmeden önce alan adının uzun vadede HTTPS hizmeti sunmaya devam edeceğinden emin olunmalıdır.
Yapılandırmanın Doğrulanması
Sunucunun başlığı gerçekten döndürdüğü, tarayıcı geliştirici araçlarının ağ sekmesinden veya komut satırı araçlarıyla yanıt başlıkları incelenerek kontrol edilebilir. Tarayıcıların sunduğu güvenlik bölümlerinde, kaydedilmiş HSTS politikası görüntülenebilir. Bu bölümde alan adının politika kapsamında olduğu ve beklenen sürenin tanımlı olduğu doğrulanabilir.
Alt alan adlarının da kapsam içinde olduğu, rastgele seçilen birkaç alt alan adı üzerinden test edilerek teyit edilebilir. Bu kontroller, sertifika sorunlarının ve yapılandırma hatalarının kullanıcıya yansımadan tespit edilmesini sağlar.
HSTS ve Arama Motoru Görünürlüğü
HSTS başlığının kendisi doğrudan bir sıralama sinyali değildir. Bununla birlikte, güvenli bağlantı kullanımı arama motorları tarafından uzun süredir dikkate alınan bir unsurdur. HSTS, sitenin HTTPS üzerinden tutarlı biçimde sunulmasını sağladığı için dolaylı olarak teknik sağlık göstergelerini destekler.
Protokol düşürme riskinin ortadan kalkması, arama motoru tarayıcılarının sayfaları tek bir kanonik adres üzerinden değerlendirmesine yardımcı olur. Bu durum, yinelenen içerik ve kanonikleştirme sorunlarının önlenmesine katkı sağlar. Sitemap dosyalarında ve iç bağlantılarda HTTPS adreslerinin kullanılması, alan adının arama motoru konsollarındaki mülkiyet doğrulaması ve indeksleme süreçleriyle birlikte değerlendirilmesi gereken bir bütünün parçasıdır.
Güvenlik başlıkları, altyapı yapılandırmasının bir parçası olarak düzenli aralıklarla gözden geçirilmelidir. Alan adı yapısında, barındırma sağlayıcısında veya sertifika sağlayıcısında yapılan değişikliklerin ardından HSTS politikasının hâlâ doğru çalıştığı doğrulanmalıdır.