BBC, güvenliği ve performansı iyileştirmek için web sitesinde HSTS'yi kullanıma sunuyor. Bunun ne anlama geldiğini ve HSTS'nin size nasıl yardımcı olabileceğini öğrenin.
HTTPS'nin benimsenme oranı son yıllarda sürekli olarak artıyor. HTTP Arşivi'nin 2021 Web Almanağı uyarınca hem masaüstü hem mobil için tüm isteklerin yaklaşık% 91'i HTTPS üzerinden sunuluyordu. HTTPS yalnızca kalıcı değildir. Service Worker gibi özelliklerin yanı sıra HTTP/2 ve HTTP/3 gibi modern protokolleri kullanmak için de gerekli bir ön koşuldur.
Kısa süre önce BBC'nin baş teknik mimarlarından biri olan Neil Craig, bbc.com için HTTP Strict Transport Security'nin (HSTS) yavaş yavaş kullanıma sunulduğunu tweet'ledi. Bunun BBC için ne anlama geldiğini ve sizin için ne anlama geldiğini öğrenin.
Sorun
Web sunucuları genellikle hem 80 hem de 443 bağlantı noktalarındaki istekleri dinler. Bağlantı noktası 80, güvenli olmayan HTTP istekleri içindir. 443 ise güvenli HTTPS istekleri içindir. Bu durum bir soruna neden olabilir. Çünkü, adres çubuğunuza https://
protokolü öneki olmadan bir adres girdiğinizde (çoğu kullanıcının genellikle yaptığı gibi), bazı tarayıcılar eski nedenlerle (her zaman böyle bir durum olmasa da) trafiği bir sitenin güvenli olmayan HTTP sürümüne yönlendirir.
Kullanıcıların bir web sitesinin güvenli olmayan bir sürümüne erişmelerini engellemek için yaygın olarak kullanılan bir yöntem, tüm istekler için HTTP'den HTTPS'ye yönlendirme yerleştirmektir. Bu kesinlikle işe yarar, ancak aşağıdaki etkinlik zincirini başlatır:
- Sunucu bir HTTP isteği alır.
- Sunucu, istenen kaynağın HTTPS eşdeğerine gitmek için bir yönlendirme yapar.
- Sunucu, tarayıcıyla güvenli bir bağlantı gerçekleştirmelidir.
- İçerik her zamanki gibi yüklenir.
Yönlendirmeler sorunsuz çalışsa da, bir sitenin güvenli olmayan sürümüne erişime izin verecek şekilde yanlış yapılandırılabilir. Her şey doğru şekilde yapılandırılmış olsa bile yönlendirme aşamasında kullanıcının güvenli olmayan HTTP üzerinden bağlanmasına yol açan bir güvenlik sorunu mevcuttur. Bu da kullanıcıları tehlikeli ortadaki adam saldırılarına maruz bırakabilir.
HSTS'yi girin
HSTS, HTTPS istekleri için Strict-Transport-Security
HTTP yanıt başlığı tarafından belirtilir. Ayarlandığında, bir web sitesine geri gelen ziyaretler "307 Dahili Yönlendirme" olarak bilinen özel bir yönlendirmeyi tetikler. Bu, sunucu yerine tarayıcının yönlendirme mantığını işlemesi anlamına gelir. Bu, istek tarayıcıdan hiçbir zaman dışarı çıkmayacağı için isteğin yakalanmasını önler ve dolayısıyla daha güvenli olur. Buna ek olarak, bu tür yönlendirmeler son derece hızlıdır. Böylece, HTTP'den HTTPS'ye atlama sırasında fark edilebilir herhangi bir gecikme ortadan kalkar.
![Bir HSTS başlığı tarafından tetiklenen, HTTP'den HTTPS'ye 307 dahili yönlendirmesi. 307 yönlendirmesi yalnızca 2 milisaniye sürer.](https://web.dev/static/blog/bbc-hsts/image/a-307-internal-redirect-cd7d384b0a833.png?authuser=5&hl=tr)
Cache-Control
ürününün max-age
yönergesine benzer bir şekilde, bir HSTS üstbilgisi bir max-age
yönergesini belirtir. Bu yönerge, politikanın aşağıdakiler için ne kadar süre geçerli olacağını belirten, saniye cinsinden bir değer alır:
Strict-Transport-Security: max-age=3600
Yukarıdaki örnekte, politika yalnızca bir saat boyunca geçerli olmalıdır.
HSTS'yi dağıtma
HSTS'yi dağıtmanın temel dezavantajı, kaynağınızı kesinlikle güvenli olarak değerlendirmeye hazır olmamanızdır. Kaynaklar sunduğunuz çok sayıda alt alan adınız olduğunu ancak bunların hepsi güvenli olmayabilir. Bu senaryoda, bir HSTS başlığı web sitenizi bozabilir.
BBC, HSTS'yi dağıtmak için doğru yaklaşımı benimsedi. Neil Craig'in tweet'inde de bahsettiği gibi, bbc.com için ayarlanan ilk değer max-age=10
idi.
Bu yaklaşım, politikanın başlangıçta yalnızca on saniye boyunca geçerli olduğu anlamına gelir. Bu yöntem çok fazla fayda sağlamaz, ancak HSTS'nin uygulanmasıyla ilgili herhangi bir sorun olup olmadığını değerlendirmeniz önerilir. Zaman geçtikçe politikayı adım adım artırabilir ve herhangi bir sorun olup olmadığını görebilirsiniz. Bu yazının yazıldığı tarihte bbc.com, max-age=86400
tutarında bir HSTS politikası belirtiyordu ve bu politika zamanla artacağı kesin.
HSTS dağıtırken kapıdan kesinlikle uzun bir max-age
değeriyle çıkmak istemezsiniz. Kullanıcılar aynı anda sorunlarla karşılaşırken birden bire sorunları düzeltmeye çalışırken bulabilirsiniz. Küçük adımlarla başlayıp zamanla artırın. Her şeyin yolunda olduğundan emin olduğunuzda max-age
yönergenizi çok daha uzun bir süreye ayarlayabilirsiniz. Tam olarak kullanıma sunulduğunda max-age
öğesinin bir veya iki yıl olarak ayarlanması önerilir.
HSTS ön yükleme listesiyle ilk gezinmelerde daha güvenli ve hızlı hareket edin
HSTS politikası yalnızca bir web sitesine ilk ziyaretten sonra geçerli olur. Bu nedenle, siteye yapılan ilk ziyarette herhangi bir avantaj sunulmaz. Bu işlem için güvenli olmayan yeniden yönlendirme gereklidir. Bununla birlikte, web sitenizi HSTS ön yükleme listesine göndererek HSTS politikanızı önceden yükleyebilirsiniz. Bu liste, tarayıcının kesinlikle HTTPS olduğunu bildiği web sitelerinin sabit kodlu bir listesidir. Siteniz önceden yükleme listesindeyken, ilk ziyaret de korunur ve HTTP-HTTPS yönlendirmesi anlık olur.
Kendiniz deneyin
BBC, HSTS'yi test etmekte rahat hissederse, aynısını web siteniz için de yapma olasılığınız yüksektir. Web sitenizi deneyin ve revize etmek istiyorsanız kullanıcılarınıza daha güvenli ve daha hızlı bir deneyim sunacak herhangi bir hata olmadığından emin olduğunuz zaman bu hizmeti HSTS ön yükleme listesine ekleyin.