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
Kullanıcı çıkış yaptığında yalnızca tarayıcıdaki ekran kapatılmamalı; tarayıcı kimlik bilgileri, uygulama oturumu, sunucu tarafındaki oturum kaydı ve varsa erişim/yenileme belirteçleri birlikte geçersizleştirilmelidir. Hangi katmanın gerçekten sona ereceği, uygulamanın oturum bilgisini çerezde mi, sunucuda mı, yoksa belirteç tabanlı bir kimlik doğrulama sisteminde mi tuttuğuna bağlıdır.

Çıkışın etkilediği katmanlar​


1. Kullanıcı arayüzü katmanı: Kullanıcı oturum kapatılmış giriş ekranına yönlendirilir. Bu yalnızca görsel bir sonuçtur; tek başına güvenlik sağlamaz.

2. Tarayıcı katmanı: Oturum çerezi, kalıcı giriş çerezi ve varsa yenileme belirteci çerezi silinir. Silme yanıtı aynı çerez adı, Domain kapsamı ve Path ile üretilmelidir; Max-Age sıfırlanır veya Expires geçmişe alınır. Secure, HttpOnly ve SameSite ayarlarının hepsinin birebir eşleşmesi çerezi tanımlayan koşul değildir; güvenli çerezi uygun HTTPS bağlamında yönetin.

3. Uygulama oturumu katmanı: Sunucu tarafında tutulan oturum kaydı sonlandırılır veya geçersiz olarak işaretlenir. Böylece eski oturum kimliğiyle gelen istekler kabul edilmez.

4. Kimlik doğrulama katmanı: Harici kimlik sağlayıcı, çoklu oturum açma sistemi veya merkezi oturum servisi kullanılıyorsa yerel çıkış ile sağlayıcıdan çıkış ayrı kapsamlar olarak tasarlanır. Yerel uygulamadan çıkış yapmak sağlayıcıdaki genel oturumu her zaman kapatmaz. Global çıkış isteniyorsa sağlayıcının desteklediği logout akışı ayrıca uygulanmalıdır.

5. Belirteç katmanı: Yenileme belirteçleri iptal edilir. Kısa ömürlü erişim belirteçleri durum bilgisiz JWT gibi çalışıyorsa, yalnızca istemciden silinmeleri onları anında geçersiz yapmayabilir. Anında iptal gerekiyorsa sunucu tarafı iptal kaydı, belirteç sürümü veya doğrulama/introspection mekanizması gerekir.

6. Önbellek ve ilişkili oturum katmanı: Redis, veritabanı, cihaz oturumu veya "beni hatırla" kaydı gibi ek oturum kayıtları varsa seçilen çıkış kapsamına ait kayıtlar birlikte iptal edilmelidir. Tek cihazdan çıkış, diğer cihazları kendiliğinden kapatmak zorunda değildir; tüm cihazlar seçeneği ayrı bir işlemdir.

Somut örnek​


Bir kullanıcı, tarayıcıda session_id çereziyle giriş yapıyor ve sunucu bu kimliği Redis'teki oturum kaydına bağlıyor. Çıkış isteğinde yalnızca çerez silinirse tarayıcı yeni isteklerde kimliği göndermese bile, çerez kopyalanmışsa veya başka bir istemcide tutuluyorsa Redis kaydı hâlâ geçerli olabilir. Doğru çıkışta hem çerez silinir hem de Redis kaydı iptal edilir. İstek sonrasında eski session_id ile yapılan deneme yetkisiz kabul edilmelidir.

JWT kullanılan başka bir uygulamada erişim belirteci istemciden silinse bile, daha önce verilmiş ve süresi dolmamış belirteç sunucu tarafından kabul edilebilir. Bu tasarımda çıkışın etkisi, erişim belirtecinin kalan ömrüne ve sunucunun iptal kontrolü uygulayıp uygulamadığına bağlıdır.

KatmanÇıkışta yapılacak işlemYapılmazsa olası sonuç
ArayüzKullanıcıyı giriş ekranına yönlendirmekGüvenlik sağlamadan yalnızca görünüm değişir
ÇerezOturum ve kalıcı giriş çerezlerini sona erdirmekTarayıcı eski kimliği göndermeye devam edebilir
Sunucu oturumuOturum kaydını silmek veya geçersizleştirmekKopyalanmış oturum kimliği çalışabilir
Yenileme belirteciBelirteci iptal etmekYeni erişim belirteçleri üretilebilir
Erişim belirteciGerekirse merkezi iptal veya sürüm kontrolü uygulamakSüresi dolana kadar eski belirteç kabul edilebilir


Uygulanabilir çıkış akışı​


  1. Çıkış isteğini yalnızca arayüzdeki yönlendirme olarak değil, sunucuda kimlik doğrulama gerektiren bir işlem olarak ele alın. Yerel çıkışı POST gibi uygun yöntem ve CSRF korumasıyla tasarlayın; geçerli oturumla ilişkilendirin. Süresi bitmiş oturumdan tekrar çıkış isteğini de güvenli ele alın.
  2. Sunucu tarafındaki mevcut oturum kaydını sil veya geçersiz durumuna getir. Oturum kimliğini daha sonra yeniden kullanılabilir bırakma.
  3. İlgili yenileme belirteçlerini, kalıcı giriş kayıtlarını ve cihaz oturumlarını iptal et. "Tüm cihazlardan çıkış" seçeneği varsa kullanıcının tüm aktif oturumlarını kapsat.
  4. Oturum çerezlerini, oluşturulurken kullanılan alan adı ve yol değerleriyle uyumlu biçimde sona erdir. Sadece arayüz durumunu temizlemekle yetinme.
  5. Erişim belirteçleri hemen geçersiz olmalıysa iptal listesi, oturum sürümü veya merkezi doğrulama gibi sunucu tarafı bir kontrol uygula. Aksi durumda kullanıcıya erişim belirtecinin çıkıştan sonra belirli bir süre daha geçerli kalabileceğini tasarımda dikkate al.
  6. Çıkıştan sonra korumalı bir sayfaya, eski oturum çerezine ve varsa eski yenileme belirtecine ayrı ayrı istek göndererek reddedildiklerini doğrula.

Beklenen sonuç, çıkıştan sonra yeni isteklerin giriş ekranına veya yetkisiz yanıtına dönmesi ve eski oturumla yeni erişim belirteci üretilememesidir. Eski erişim belirteci çalışıyorsa tasarımda belirlenen iptal süresiyle karşılaştırın. Anlık iptal vaat edilmemiş durum bilgisiz bir belirtecin süresine kadar kabulü tek başına bozuk çıkış kanıtı değildir.

Sık yapılan hatalar​


Sadece çıkış bağlantısını gizlemek: Kullanıcıyı başka sayfaya göndermek oturumu kapatmaz.

Yalnızca çerezi silmek: Sunucu tarafındaki kayıt ve belirteçler geçerliyse ele geçirilmiş bilgiler kullanılabilir.

Her belirteci anında geçersiz saydığını varsaymak: Durum bilgisi olmayan erişim belirteçlerinde bu, ancak sunucu ayrıca iptal kontrolü yapıyorsa doğrudur.

Tek cihazı tüm oturum sanmak: Kullanıcının başka tarayıcı veya cihazlardaki oturumları ayrı kayıtlar olarak yönetilmelidir.

Çıkış testini yalnızca aynı tarayıcıda yapmak: Eski çerez, eski belirteç ve başka cihaz oturumu ayrı ayrı test edilmeden çıkış akışının tamamlandığı söylenemez.

Sık sorulan sorular​

Geri düğmesi eski hesabı gösteriyorsa çıkış başarısız mıdır?​

Önbellekteki görünüm ile sunucudan yeni yetkili veri alınması farklıdır. Eski ekranı görmek tek başına oturumun geçerli olduğunu kanıtlamaz. Korumalı yeni isteklerin reddedilmesini doğrulayın; hassas sayfaların önbellek politikasını ve istemcide tutulan kullanıcı verisini ayrıca düzenleyin.

Açık WebSocket bağlantısı kendiliğinden kapanır mı?​

Her uygulamada kapanmaz. Bağlantı yalnız kurulurken doğrulanıyorsa çerezin silinmesi mevcut bağlantıyı durdurmayabilir. Oturum iptali aktif bağlantılara yansıtılmalı veya hassas mesajlarda geçerlilik yeniden kontrol edilmelidir. Eski kimlikle yeniden bağlanmanın reddi ayrı bir testtir.
 

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