Oturum (Session) Nedir?
Kısa tanım
Oturum (session), durumsuz çalışan HTTP üzerinde bir kullanıcının art arda gelen isteklerini birbirine bağlayan mekanizmadır. Klasik yöntemde sunucu, giriş yapan kullanıcı için tahmin edilemez bir oturum kimliği üretir, kullanıcıya ait bilgileri kendi tarafında saklar ve kimliği tarayıcıya bir çerezle gönderir; tarayıcı bu çerezi sonraki her istekte geri yollar. Alternatif yaklaşımda durum, imzalı bir token içinde istemcide taşınır.
Diğer adları: Session, Web oturumu, Session ID, Oturum kimliği, Sunucu taraflı oturum

Durumsuz bir protokolde süreklilik
HTTP her isteği bağımsız ele alır: sunucu, az önce giriş yapan kullanıcının bir sonraki isteği gönderen kişiyle aynı olduğunu protokolden öğrenemez. Sepete ürün eklemek, panelde sayfadan sayfaya geçmek ya da çok adımlı bir formu doldurmak ise sürekliliğe ihtiyaç duyar. Oturum, bu boşluğu dolduran katmandır. Kimlik doğrulama kullanıcının kim olduğunu bir kez kanıtlar; oturum bu kanıtı sonraki isteklere taşır.
Sunucu taraflı oturum adım adım
- Kullanıcı e-posta ve parolasıyla giriş yapar, sunucu bilgileri doğrular.
- Sunucu kriptografik olarak güvenli bir rastgele sayı üreteciyle bir oturum kimliği oluşturur ve bu kimliğe bağlı kaydı (kullanıcı numarası, roller, oluşturulma zamanı) kendi deposuna yazar.
- Kimlik tarayıcıya bir çerezle gönderilir:
Set-Cookie: __Host-sid=q8N3vT0x...; Path=/; Secure; HttpOnly; SameSite=Lax - Tarayıcı sonraki her istekte
Cookie: __Host-sid=...başlığını ekler, sunucu kaydı bulup kullanıcıyı tanır. - Çıkışta kayıt sunucudan silinir; çerez o andan itibaren hiçbir şey ifade etmez.
Oturum kimliğinin kendisi anlamsız olmalıdır: içinde kullanıcı adı, e-posta ya da rol bulunmaz. OWASP, tahmin edilmesini önlemek için kimliğin en az 64 bit entropi taşımasını önerir. Kayıtlar tek sunuculu küçük uygulamalarda bellekte veya veritabanında tutulabilir; birden fazla sunucunun aynı oturumu görmesi gerekiyorsa Redis gibi paylaşılan, hızlı bir depo yaygın tercihtir.
Sunucu oturumu mu, token mı?
| Sunucu taraflı oturum | Kendi içinde yeterli token (ör. JWT) | |
|---|---|---|
| Durum nerede? | Sunucunun deposunda; istemcide yalnızca kimlik var | Token'ın içinde, imzayla korunarak |
| Anında iptal | Kolay: kaydı silmek yeterli | Zor: token süresi dolana kadar geçerlidir, iptal için ek liste gerekir |
| Ölçekleme | Her istekte depoya bir sorgu | Alıcı imzayı yerelde doğrular |
| Tipik kullanım | Tarayıcı tabanlı web uygulamaları | API'ler, servisler arası çağrılar, mobil istemciler |
Pratikte ikisi sıklıkla birlikte kullanılır: tarayıcı tarafında klasik bir oturum çerezi tutulur, sunucu arka planda başka servislere erişim token'larıyla bağlanır. JWT'yi oturum çerezinin yerine koymak, özellikle anında çıkış ve yetki geri alma gerektiren uygulamalarda çoğu zaman çözdüğünden fazla sorun yaratır.
Oturum güvenliğinin temel kuralları
- Girişten sonra yeni kimlik: Yetki düzeyi değiştiğinde, özellikle girişte, oturum kimliği yenilenmelidir. Aksi hâlde saldırganın önceden kurbana kabul ettirdiği bir kimlik giriş sonrasında da geçerli kalır (session fixation).
- Çerez öznitelikleri:
Secure, JavaScript erişimini kesen HttpOnly ve siteler arası gönderimi sınırlayan SameSite birlikte kullanılmalıdır. - İki zaman aşımı: Hareketsizlik (idle) süresi ve mutlak süre ayrı ayrı uygulanmalıdır. OWASP düşük riskli uygulamalar için 15–30 dakikalık hareketsizlik, mutlak süre için 4–8 saatlik aralıkları örnek verir; bankacılık gibi alanlarda süreler çok daha kısadır.
- Çıkış sunucuda yapılır: Yalnızca tarayıcıdaki çerezi silmek oturumu sonlandırmaz; sunucudaki kayıt da geçersiz kılınmalıdır.
- Kimlik URL'de veya localStorage'da tutulmaz: URL'deki kimlik loglara ve Referer başlığına sızar; localStorage'daki kimliği sayfada çalışan her script okuyabilir.
Ayrıntılı kontrol listesi OWASP Session Management Cheat Sheet'te bulunuyor.
Aynı kelime, farklı kavramlar
“Oturum” kelimesi başka bağlamlarda farklı şeyleri anlatır. Google Analytics 4'te oturum, kullanıcının bir ziyaret boyunca yaptığı etkileşimlerin grubudur ve varsayılan olarak 30 dakikalık hareketsizlikten sonra sona erer; kimlik doğrulamayla ilgisi yoktur. Tarayıcıdaki sessionStorage, yalnızca o sekme açık kaldığı sürece duran bir depolama alanıdır. “Oturum çerezi” (session cookie) ise sona erme tarihi verilmemiş, tarayıcı oturumu kapanınca silinmesi beklenen çerez türünün adıdır; bir giriş oturumunu taşıyıp taşımaması önemli değildir.

