Kısaca: HSTS nedir? HSTS (HTTP Strict Transport Security), sunucunun tarayıcıya "bu siteye bundan sonra yalnızca HTTPS ile bağlan" dediği bir güvenlik başlığıdır. Tarayıcı bu kuralı belirlediğiniz süre boyunca hatırlar, http ile yazılan adresleri kendiliğinden https'e çevirir ve geçersiz sertifika uyarısını geçmeye izin vermez. Doğru kullanım için önce tüm alan adlarınızın HTTPS ile çalıştığından emin olun, sonra başlığı kısa bir süreyle açıp kademeli olarak uzatın.
Sitenizi HTTPS'e taşıdınız ve http adreslerini 301 ile yönlendiriyorsunuz. Bu iyi bir başlangıç, ama ilk istek hâlâ şifresiz gider ve araya giren biri o yönlendirmeyi değiştirebilir. HSTS bu boşluğu kapatır. Bu yazıda HSTS'in nasıl çalıştığını, başlıktaki ayarların anlamını, siteyi kilitlemeden nasıl açılacağını ve preload listesine neden acele etmemeniz gerektiğini anlatıyoruz.
HSTS, Strict-Transport-Security adlı bir HTTP yanıt başlığıdır ve RFC 6797 ile tanımlanmıştır. Tarayıcı bu başlığı HTTPS üzerinden aldığında alan adını kendi HSTS listesine ekler. MDN belgelerine göre bundan sonra:
max-age süresi boyunca geçerlidir ve her yeni yanıtta bu süre yeniden başlar.Önemli bir ayrıntı: Başlık şifresiz HTTP yanıtında gönderilirse tarayıcı onu yok sayar. Ayrıca HSTS bir IP adresine değil, yalnızca alan adına uygulanır.
HSTS'in asıl hedefi, kullanıcı ile sunucu arasına giren saldırgandır. Örneğin bir kafede sahte bir Wi-Fi ağına bağlandığınızı düşünün. HSTS yoksa tarayıcının gönderdiği ilk http isteği okunabilir ve saldırgan https'e yönlendirmeyi engelleyebilir. hstspreload.org HSTS'in koruduğu durumları şöyle sıralar:
HSTS, sitenizin uygulama katmanını korumaz. Form saldırıları veya kötü amaçlı istekler için WAF (web uygulama güvenlik duvarı) gibi ayrı önlemler gerekir.
| Ayar | Anlamı | Dikkat edilecek nokta |
|---|---|---|
max-age | Tarayıcının kuralı kaç saniye hatırlayacağı | Uzun süre, hata yaparsanız geri dönüşün de uzun süreceği anlamına gelir |
includeSubDomains | Kuralı tüm alt alan adlarına da uygular | HTTPS'i olmayan bir alt alan adı erişilemez hale gelir |
preload | Tarayıcılara gömülü preload listesine girme isteğini belirtir | Varsayılan olarak eklenmemeli; listeden çıkmak aylar sürer |

Header always set Strict-Transport-Security "max-age=300; includeSubDomains"
add_header Strict-Transport-Security "max-age=300; includeSubDomains" always;
HSTS'in bir zayıf noktası vardır: Tarayıcı siteye ilk kez bağlanırken kuralı henüz bilmez. Preload listesi bu ilk ziyareti de korumak için tarayıcılara gömülü bir alan adı listesidir. Listeye başvurmak için geçerli sertifika, aynı alan adında http'den https'e yönlendirme, tüm alt alan adlarında HTTPS ve ana alan adında en az 1 yıllık max-age ile includeSubDomains ve preload içeren bir başlık gerekir.
Yine de hstspreload.org, HSTS'i önerirken preload için aynı şeyi söylemez; birçok tarayıcı http gezinmelerini zaten https'e yükseltmeye çalıştığı için preload'un ek faydası sınırlıdır. Listeden çıkmak ise aylar sürebilir. Tüm alt alan adlarınızın uzun vadede HTTPS ile çalışacağından emin değilseniz preload eklemeyin.
curl -sI https://alanadiniz.com | grep -i strict-transport-security komutu başlığı ve değerini gösterir.strict-transport-security satırını arayın.chrome://net-internals/#hsts sayfasında alan adınızı sorgulayarak tarayıcının kaydettiği kuralı görebilirsiniz.max-age=0 göndermeniz gerekir.HSTS, HTTPS'e geçmiş bir sitenin son güvenlik adımıdır: Tarayıcıya siteye yalnızca şifreli bağlantıyla gelmesini söyler ve sertifika hatalarının geçilmesini engeller. Önce HTTPS'i ve yönlendirmeleri tamamlayın, alt alan adlarını kontrol edin, başlığı kısa bir süreyle açıp aşamalı olarak uzatın ve preload'u ancak uzun vadeli bir kararla düşünün. ÇAP Hosting'teki sitenizde başlığı nereye ekleyeceğinizden emin değilseniz destek ekibimizle birlikte ilerleyebilirsiniz.
HSTS doğrudan bir sıralama ayarı değildir. Ancak ziyaretçilerin ve arama motorlarının sitenin HTTPS sürümüne ulaşmasını tutarlı hale getirir. HTTPS'e geçişin kendisi için 301 yönlendirmeleri yine gereklidir.
Evet. HTTPS üzerinden max-age=0 içeren başlığı gönderdiğinizde tarayıcılar kuralı siler. Ancak bu, yalnızca siteyi tekrar ziyaret eden tarayıcılarda etkili olur; preload listesinden çıkmak ise aylar sürebilir.
Önce 300 saniye ile başlayın, sonra 1 hafta ve 1 ay aşamalarına geçin. Sorun yoksa 1 yıl gibi uzun bir değer kullanın. Preload başvurusu için en az 31536000 saniye gerekir.
Hayır. HSTS, geçerli bir SSL sertifikası ve çalışan bir HTTPS kurulumu olmadan kullanılamaz. Yalnızca tarayıcının her zaman bu güvenli bağlantıyı kullanmasını sağlar.