format_list_bulletedBu İçerikte Bahsedilen Konular
- arrow_rightHSTS Nedir ve Web Güvenliği İçin Neden Önemlidir?
- arrow_rightHSTS Nasıl Çalışır?
- arrow_rightHSTS Başlık Parametreleri
- arrow_rightTemel HSTS Yanıt Başlığı
- arrow_rightWeb Sunucusunda HSTS Yapılandırması
- arrow_rightNginx'te HSTS Yapılandırması
- arrow_rightApache'de HSTS Yapılandırması
- arrow_rightCloudflare'da HSTS Etkinleştirme
- arrow_rightHSTS Preload Listesi: Kalıcı HTTPS Zorunluluğu
- arrow_rightPreload Listesine Başvuru Koşulları
- arrow_rightPreload Başvurusu Nasıl Yapılır?
- arrow_rightHSTS ve SEO İlişkisi
- arrow_rightHSTS Yapılandırırken Yapılan Yaygın Hatalar
- arrow_right1. Çok Düşük max-age Değeri
- arrow_right2. Alt Alan Adlarını Dahil Etmeden Önce Test Yapmama
- arrow_right3. Mixed Content Uyarılarını Görmezden Gelme
- arrow_rightHSTS Diğer Güvenlik Header'ları ile Birlikte Kullanımı
- arrow_rightHSTS Testi ve Doğrulama
- arrow_rightSonuç ve Öneriler
HSTS Nedir ve Web Güvenliği İçin Neden Önemlidir?
HTTP Strict Transport Security (HSTS), web sitelerinin tarayıcılara yalnızca güvenli HTTPS bağlantıları üzerinden erişilmesini zorunlu kılan bir güvenlik mekanizmasıdır. Bu protokol, saldırganların aradaki trafiği dinleyerek (man-in-the-middle attack) hassas verileri ele geçirmesini önler. Web siteniz için HSTS yapılandırması, Google Chrome, Firefox, Safari gibi modern tarayıcıların varsayılan olarak güvenli bağlantı kullanmasını sağlar.
2024 yılında yapılan araştırmalara göre, internet trafiğinin %85'inden fazlası artık şifreli bağlantılar üzerinden gerçekleşse de, HSTS kullanımı hâlâ tüm web sitelerinin yalnızca %30'unu kapsıyor. Bu durum, HSTS'nin yaygınlaşması için büyük bir potansiyel olduğunu gösteriyor.
HSTS Nasıl Çalışır?
HSTS, sunucu tarafından tarayıcıya gönderilen bir HTTP başlığı (Strict-Transport-Security) aracılığıyla çalışır. Bu başlık, tarayıcıya belirtilen süre boyunca (max-age parametresi) yalnızca HTTPS kullanılması gerektiğini bildirir.
HSTS Başlık Parametreleri
HSTS başlığı üç temel parametre içerebilir:
- max-age: Tarayıcının HSTS politikasını ne kadar süreyle hatırlayacağını saniye cinsinden belirtir. Önerilen minimum değer 31536000 (1 yıl) olarak kabul edilir.
- includeSubDomains: Bu parametre belirtildiğinde, tüm alt alan adları da HSTS politikasına dahil edilir.
- preload: Tarayıcının HSTS preload listesine dahil edilmek için gerekli koşulları karşıladığını belirtir.
Temel HSTS Yanıt Başlığı
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
Web Sunucusunda HSTS Yapılandırması
Nginx'te HSTS Yapılandırması
Nginx web sunucusunda HSTS etkinleştirmek için sunucu bloğunuzdaki SSL/TLS yapılandırmasına aşağıdaki direktifi eklemeniz gerekir:
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
always parametresi, HSTS başlığının tüm yanıtlarda (hata sayfaları dahil) bulunmasını sağlar. Nginx'te nginx virtual host yapılandırma rehberi konusunda daha detaylı bilgi edinebilirsiniz.
Apache'de HSTS Yapılandırması
Apache sunucusu kullanıyorsanız, .htaccess dosyanıza veya sanal ana makine yapılandırmanıza şu satırları ekleyin:
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
Cloudflare'da HSTS Etkinleştirme
Cloudflare CDN kullanıyorsanız, Cloudflare panelinden HSTS'i kolayca etkinleştirebilirsiniz:
- Cloudflare kontrol paneline giriş yapın
- Sitenizi seçin ve "Security" sekmesine tıklayın
- "Settings" bölümünden "HSTS" seçeneğini bulun
- "Enable HSTS" butonuna tıklayın
- İstenilen ayarları yapılandırın (max-age, includeSubDomains, preload)
HSTS Preload Listesi: Kalıcı HTTPS Zorunluluğu
HSTS preload listesi, büyük tarayıcı üreticileri (Google, Mozilla, Apple, Microsoft) tarafından yönetilen ve belirli sitelerin tarayıcılara önceden yüklenmiş listelerde yer almasını sağlayan bir sistemdir. Preload listesine dahil edilen bir site, kullanıcı siteyi ilk kez ziyaret etse bile otomatik olarak HTTPS yönlendirmesi gerçekleştirir.
Preload Listesine Başvuru Koşulları
Preload listesine kabul edilmek için aşağıdaki koşulları karşılamanız gerekir:
| Koşul | Gereksinim |
|---|---|
| max-age | En az 31536000 saniye (1 yıl) |
| includeSubDomains | Zorunlu |
| preload | Zorunlu |
| SSL/TLS Sertifikası | Geçerli ve güvenilir olmalı |
| Yönlendirme | HTTP'den HTTPS'e otomatik yönlendirme |
Preload Başvurusu Nasıl Yapılır?
HSTS preload başvurusu için hstspreload.org adresine giderek sitenizi ekleyebilirsiniz. Başvuru sonrasında tarayıcılar birkaç hafta içinde güncellemeleriyle listeye eklenirsiniz. Önemli bir not: Preload listesinden çıkmak son derece zordur ve en az birkaç ay sürebilir, bu nedenle tam olarak hazır olmadan başvurmamanız önerilir.
HSTS ve SEO İlişkisi
Google, HTTPS kullanımını sıralama faktörlerinden biri olarak kabul etmiştir. HSTS, yalnızca güvenliği artırmakla kalmaz, aynı zamanda SEO performansınıza da olumlu katkı sağlar:
- 301 Yönlendirmesi Önlenir: HTTP'den HTTPS'e her yönlendirme, arama motorlarının crawl bütçesini harcar. HSTS ile bu yönlendirme tarayıcı düzeyinde gerçekleşir.
- Güven Sinyali: Kullanıcılar güvenli siteleri tercih eder, bu da düşük hemen çıkma oranları ve uzun oturum süreleri anlamına gelir.
- Performans: HTTPS bağlantıları HTTP/2 ve QUIC protokollerini kullanarak daha hızlı yüklenir.
HSTS Yapılandırırken Yapılan Yaygın Hatalar
1. Çok Düşük max-age Değeri
Birçok site yöneticisi güvenlik testi amacıyla düşük max-age değerleri kullanır. Ancak bu, HSTS'in etkisini azaltır. Minimum olarak 1 yıl (31536000 saniye) kullanılması önerilir.
2. Alt Alan Adlarını Dahil Etmeden Önce Test Yapmama
includeSubDomains parametresi etkinleştirildiğinde, tüm alt alan adları HTTPS kullanmaya zorlanır. Alt alan adlarınızda SSL sertifikası yoksa site erişilemez hale gelir. Bu nedenle önce alt alan adlarınızı kontrol edin ve SSL sertifikalarınızın güncel olduğundan emin olun.
3. Mixed Content Uyarılarını Görmezden Gelme
HSTS etkinleştirildikten sonra, sitenizdeki HTTP kaynakları (resimler, scriptler, CSS dosyaları) yüklenmeyecektir. Tüm kaynaklarınızın HTTPS üzerinden sunulduğundan emin olun.
HSTS Diğer Güvenlik Header'ları ile Birlikte Kullanımı
HSTS, web güvenliğini sağlamak için tek başına yeterli değildir. Kapsamlı bir güvenlik için diğer HTTP güvenlik başlıklarıyla birlikte kullanılmalıdır:
| Header | İşlev |
|---|---|
| Content-Security-Policy | XSS ve veri sızıntısı önleme |
| X-Frame-Options | Clickjacking koruması |
| X-Content-Type-Options | MIME type sniffing önleme |
| Referrer-Policy | Kullanıcı gizliliği koruma |
| Permissions-Policy | Tarayıcı özelliklerini kontrol etme |
Content Security Policy (CSP) rehberi ile HSTS kombinasyonu, web uygulamalarınızı çok katmanlı bir güvenlik mimarisiyle koruyabilirsiniz.
HSTS Testi ve Doğrulama
HSTS yapılandırmanızı test etmek için aşağıdaki araçları kullanabilirsiniz:
- SSL Labs SSL Test: Sitenizin SSL/TLS yapılandırmasını ve HSTS desteğini analiz eder.
- Chrome DevTools: Network sekmesinde yanıt başlıklarını inceleyerek HSTS'in etkin olup olmadığını kontrol edebilirsiniz.
- hstspreload.org: Hem mevcut yapılandırmanızı test eder hem de preload uygunluğunuzu değerlendirir.
- curl komutu:
curl -I https://siteniz.comkomutuyla HSTS başlığını doğrudan kontrol edebilirsiniz.
Sonuç ve Öneriler
HSTS yapılandırması, modern web güvenliğinin temel taşlarından biridir. İşte uygulamanız gereken adımlar:
- Önce tüm kaynaklarınızı HTTPS üzerinden sunulabilir hale getirin
- Düşük max-age değeriyle HSTS'i test edin
- Alt alan adlarınızda SSL sertifikası olduğundan emin olun
- max-age değerini 1 yıla çıkarın ve includeSubDomains ekleyin
- Site performansınızı izleyin, gerekiyorsa performans optimizasyonu yapın
- Hazır hissettiğinizde preload listesine başvurun
Unutmayın: HSTS preload listesine dahil olmak geri dönüşü zor bir karardır. Bu nedenle sitenizin tüm bileşenlerinin HTTPS ile uyumlu olduğundan emin olduktan sonra bu adımı atın. Mevcut yedekleme stratejilerinizi de güncel tutmayı ihmal etmeyin.