Mehmet

WFN Üye
Konular
1,851
Mesajlar
1,852
Çözüm
0
Ticaret Puanı
0
Üyelik
1 Ay 6 Gün
Konum
YurtDışı
Web Sitesi
Var
Alanı
Google Adsense
1/1
Konu sahibi

HttpOnly çerez niteliği ne sağlar?​


HttpOnly, çerezi document.cookie gibi betiklerin kullandığı HTTP dışı API erişiminden korur; JavaScript bu çerezi okuyamaz ve aynı yolla üzerine yazamaz. Böylece oturum çerezinin document.cookie üzerinden alınarak dışarı gönderilmesi zorlaşır. Çerez yine de eşleşen HTTP istekleriyle sunucuya gönderilir; yani kullanıcı oturum açmışken normal sayfa ve API istekleri çalışmaya devam eder.

Bu nitelik özellikle oturum kimliği taşıyan çerezlerde kullanılmalıdır. Ancak XSS açığını ortadan kaldırmaz: Saldırgan sayfada JavaScript çalıştırabiliyorsa, çerezin değerini okuyamasa bile kullanıcının tarayıcısı üzerinden yetkili istekler göndermeyi deneyebilir. Bu nedenle HttpOnly, XSS korumasının yerine değil, katmanlarından biri olarak düşünülmelidir.

Nasıl çalışır?​


Sunucu, oturum çerezini istemciye gönderirken niteliği ekler:

Kod:
Set-Cookie: session=ornek-oturum-degeri; HttpOnly; Secure; SameSite=Lax; Path=/

Bu örnekte:

  • HttpOnly, JavaScript'in çerez değerini document.cookie ile okumasını engeller.
  • Secure, çerezin yalnızca HTTPS üzerinden gönderilmesini ister. Geliştirme ortamında HTTPS yoksa davranış test ortamına göre değişebilir.
  • SameSite=Lax, çerezin siteler arası isteklerde otomatik gönderilmesini sınırlar ve CSRF riskini azaltmaya yardımcı olur.
  • Path=/, çerezin alan adı kapsamındaki tüm yollara uygun olmasını sağlar; Path tek başına bir güvenlik veya uygulamalar arası izolasyon sınırı değildir.

Kullanıcı JavaScript konsolunda document.cookie çalıştırırsa HttpOnly çerez bu çıktıda görünmez. Buna karşılık tarayıcı, uygun alan adı, yol, HTTPS ve SameSite koşulları sağlandığında çerezi sunucuya yapılan isteğe kendisi ekler.

Somut örnek: oturum çerezini korumak​


Bir kullanıcı giriş yaptığında uygulama session adlı çerez oluşturuyor olsun. Çerez HttpOnly olmadan ayarlanırsa kötü amaçlı bir betik, örneğin document.cookie değerini okuyup oturum kimliğini dışarı aktarabilir. HttpOnly eklendiğinde bu doğrudan okuma yolu kapanır.

Uygulamanın beklenen sonucu şudur: Kullanıcı giriş yaptıktan sonra normal sayfa ve API istekleri başarılı olur; ancak sayfadaki JavaScript session değerini okuyamaz. Çerez geliştirici araçlarında ağ isteğinin çerez bölümünde görülebilir, fakat bu görünürlük tarayıcı yönetimi içindir ve JavaScript erişimi anlamına gelmez.

NitelikKoruduğu sınırTek başına sağlamadığı
HttpOnlyBetiklerin çerez değerine erişimiXSS veya CSRF açığının kapanması
SecureUygun çerezin güvenli taşıma kanalıÇerez içeriğinin şifrelenmesi
SameSiteSiteler arası çerez gönderme koşullarıBütün iş akışlarında tam CSRF savunması

Uygulama ve kontrol adımları​


  1. Oturum, kimlik doğrulama ve yenileme çerezlerini belirleyin. Kullanıcı tercihleri gibi JavaScript'in gerçekten okuması gereken çerezleri otomatik olarak HttpOnly yapmayın; aksi durumda istemci tarafı kodu bu değere erişemez.
  2. Sunucunun çerezi üretirken HttpOnly niteliğini eklediğini doğrulayın. Kullanılan framework veya oturum kütüphanesinde güvenli çerez ayarlarını etkinleştirin; yalnızca tarayıcı tarafında yeni çerez oluşturmaya güvenmeyin.
  3. Üretim trafiğinde oturum çerezine Secure ve uygun bir SameSite değeri de ekleyin. Çerez alan adı ve Path kapsamını gerektiğinden geniş tutmayın.
  4. HTTPS üzerinden giriş yapın ve tarayıcı geliştirici araçlarında sunucunun Set-Cookie yanıtını inceleyin. Çerez ayrıntılarında HttpOnly etkin, Secure ve SameSite değerleri beklenen şekilde görünmelidir.
  5. Uygulamada oturum açma, çıkış yapma, parola değiştirme ve oturum yenileme akışlarını test edin. Oturum kullanılamıyorsa önce alan adı, yol, HTTPS ve SameSite koşullarını kontrol edin; HttpOnly'nin kendisi çerezin sunucuya gönderilmesini engellemez.

HttpOnly'yi yalnızca hassas çerezlerde kullanmak pratik bir yaklaşımdır. Çerezi JavaScript'in okuması gerekmiyorsa varsayılan tercih HttpOnly olmalıdır. JavaScript'in ihtiyaç duyduğu bir erişim belirteci varsa onu HttpOnly olmayan bir çerezde tutmadan önce mimariyi yeniden değerlendirin; erişilebilir belirteçler XSS etkisini büyütebilir.

Sık yapılan hatalar​


HttpOnly'nin şifreleme olduğunu sanmak: Bu nitelik çerez değerini şifrelemez; yalnızca istemci tarafı JavaScript erişimini sınırlar.

XSS açığını kapattığını düşünmek: Saldırgan çerezi okuyamasa da sayfada betik çalıştırabiliyorsa kullanıcının yetkisiyle istek gönderebilir. Girdi çıktısı kodlama, içerik güvenliği ve güvenli DOM kullanımı ayrıca ele alınmalıdır.

CSRF koruması yerine kullanmak: HttpOnly çerez, uygun koşullardaki isteklerle birlikte sunucuya gönderilmeye devam eder. Duruma göre SameSite, CSRF belirteci veya Origin/Referer kontrolleri gerekir.

Sık sorulan sorular​


HttpOnly çerez geliştirici araçlarında hiç görünmez mi?​


Hayır. Tarayıcının depolama veya ağ araçlarında görülebilir. Engellenen şey geliştirici araçlarının gösterimi değil, web sayfasında çalışan JavaScript'in çerez değerini okumasıdır.

HttpOnly API isteklerinde oturum kullanımını engeller mi?​


Hayır. İstek çerez kapsamına ve tarayıcı politikalarına uyuyorsa tarayıcı çerezi otomatik gönderir. Ancak farklı kaynaklara yapılan isteklerde SameSite, CORS ve kimlik bilgisi politikaları ayrıca sonucu etkileyebilir.
 

Sende şimdi bize katılmak ister misin?

Kayıt ol

Bize katılım kolay ve ücretsizdir!

Konuyu görüntüleyenler

Bu konuyu şu anda görüntüleyen üye bulunmuyor.
Robotlar:
  • Anthropic