HSTS (Strict-Transport-Security) başlığı, bir tarayıcıya bir alan adına yalnızca HTTPS üzerinden bağlanmasını söyler ve tarayıcı içi önyüklenmiş (preload) listeye eklenen siteler için bu kural, kullanıcı ilk kez o siteyi ziyaret etmeden önce bile geçerli olur. Türkiye'deki bankacılık ve e-ticaret siteleri, oturum çerezlerinin düz HTTP üzerinden sızdırılmasını önlemek için bu başlığı neredeyse istisnasız kullanır — bu yüzden production ortamında eksik olması ciddi bir güvenlik denetimi bulgusu sayılır.
İstek başlıklarına karşı yanıt başlıkları
İstek başlıklarını (Accept, User-Agent, Cookie gibi) tarayıcı, kendisini ve beklentilerini tanımlayarak sunucuya gönderir. Yanıt başlıklarını (Content-Type, Set-Cookie, Cache-Control) sunucu, döndürülen verileri ve tarayıcı için talimatları tanımlayarak geri gönderir.
Content-Type neden önemli
Content-Type başlığı, tarayıcıya yanıt gövdesini nasıl yorumlayacağını söyler: bir HTML sayfası, JSON verisi, bir resim veya indirilecek bir dosya olarak. Burada doğru değer olmadan, tarayıcı JSON'ı düz metin olarak görüntülemeye çalışabilir veya tam tersi, HTML'yi yanlış işleyebilir.
Cache-Control önbelleklemeyi nasıl yönetir
max-age=3600 veya no-cache gibi değerler, tarayıcıya ve aradaki proxy'lere bir kaynağın önbelleğe alınmış bir sürümünün sunucudan tekrar istenmeden ne kadar süre kullanılabileceğini söyler. Bu başlığın yanlış yapılandırılması, kullanıcıların bir sitenin eski bir sürümünü görmesinin yaygın bir nedenidir.
Bu neden gereklidir
- Bir tarayıcının bir API yanıtını neden yanlış görüntülediğini teşhis etmek.
- Production ortamına çıkmadan önce HSTS gibi kritik güvenlik başlıklarının gerçekten ayarlandığını doğrulamak.
- Sitenin HTTPS üzerinden sunulduğunu onaylamak — bu sitenin kendi hash ve JWT araçlarının dayandığı Web Crypto API'nin çalışması için zorunlu bir koşuldur.
Bir başlık neden bazen birden çok kez görünür
HTTP, aynı başlığın bir yanıtta birden çok kez görünmesine izin verir — en yaygın örnek, ayarlanan her cookie için bir tane olmak üzere birden çok Set-Cookie satırıdır. Diğer tekrarlanan başlıkların çoğu, anlamını değiştirmeden virgülle ayrılmış tek bir değere birleştirilebilir, ama Set-Cookie kasıtlı bir istisnadır, çünkü bir virgül meşru olarak bir cookie değerinin parçası olabilir.