HSTS Nedir? Strict-Transport-Security Başlığı Nasıl Eklenir?
Siteniz HTTPS kullanıyor ve HTTP isteklerini HTTPS'e yönlendiriyor. Yeterli mi? Tam değil. Bir ziyaretçi adres çubuğuna yalnızca ornek.com yazdığında tarayıcının ilk isteği hâlâ şifresiz HTTP ile gider. Aynı kafe Wi-Fi'ındaki bir saldırgan tam bu ilk isteğe araya girip bağlantıyı HTTP'de tutabilir (SSL stripping). HSTS bu açığı kapatır.
HSTS ne yapar?
Strict-Transport-Security başlığını gören tarayıcı, belirtilen süre boyunca o siteyi yalnızca HTTPS ile açar; kullanıcı http:// yazsa bile isteği kendisi HTTPS'e çevirir. Sertifika hatası olduğunda da kullanıcının "yine de devam et" seçeneğini kaldırır.
Önerilen değer
Strict-Transport-Security: max-age=63072000; includeSubDomains
max-age: saniye cinsinden süre. 63072000 iki yıldır. İlk kez ekliyorsanız kısa bir değerle (ör.max-age=300) başlayıp sorun olmadığını gördükten sonra yükseltmek güvenli bir yoldur.includeSubDomains: tüm alt alan adlarını da kapsar. Dikkat: HTTPS sunmayan bir alt alan adınız varsa (eski bir panel, bir test sunucusu) o adres tarayıcıda açılmaz hâle gelir. Emin değilseniz bu kısmı çıkarın.
Başlık yalnızca HTTPS yanıtlarında etkilidir; HTTP yanıtına eklenen HSTS tarayıcılar tarafından yok sayılır.
Nasıl eklenir?
Nginx
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains" always;
Satırı HTTPS server bloğuna ekleyin. always, başlığın hata sayfalarında da gönderilmesini sağlar. Not: bir location bloğunda başka bir add_header varsa, Nginx üst bloktaki başlıkları o blokta göndermez; satırı oraya da eklemeniz gerekir.
Apache
Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains"
mod_headers modülünün açık olması gerekir (a2enmod headers).
Cloudflare
SSL/TLS › Edge Certificates › HTTP Strict Transport Security (HSTS) ekranından açabilirsiniz.
Vercel
Vercel, kendi alan adlarında HSTS'yi varsayılan olarak gönderir. Özel bir değer istiyorsanız vercel.json içindeki headers bölümüne ekleyebilirsiniz.
Preload: dikkatli olun
preload ifadesi ve hstspreload.org'a başvuru, alan adınızı tarayıcıların içine gömülü listeye ekletir; böylece ilk ziyaret bile HTTPS olur. Ancak listeden çıkmak aylar sürebilir ve tüm alt alan adlarınızın kalıcı olarak HTTPS sunması gerekir. Önce includeSubDomains ile uzun bir süre sorunsuz çalıştığınızdan emin olun.
Kontrol edin
Güvenlik başlıkları testimiz HSTS'yi ve diğer yedi güvenlik başlığını tek seferde kontrol eder.