Ana içeriğe geç

Oturum

İngilizcesi
Session
Okunuşu
seşın

Günlük kullanımda iki ad da yaygın.

Güncellendi 2 dk okuma

Bu sayfayı paylaşın

Bağlantıyı gönderin, tanımı bağlantısıyla birlikte alıntılayın ya da kendi sitenizde bir kart olarak gösterin.

https://softwaredictionary.org/tr/terimler/session

Kısaca

Oturum, sunucunun bir kullanıcıyı birçok istek boyunca hatırlama yöntemidir; genellikle veriler sunucuda tutulur ve tarayıcıya bir oturum kimliği verilir.

Web geliştirmede oturum (session) nedir?

HTTP durumsuzdur (stateless); yani her istek tek başına ele alınır ve sunucu önceki istekleri otomatik olarak hatırlamaz. Oturum bu hafızayı ekler: bir kullanıcı ile bir uygulama arasında, genellikle giriş yapmadan çıkış yapmaya kadar süren bir etkileşim dönemidir ve bu süre boyunca sunucu kullanıcının kim olduğunu ve alışveriş sepetinin içeriği gibi verileri takip eder.

Klasik sunucu taraflı yaklaşımda bir kullanıcı giriş yaptığında sunucu, kullanıcı kimliğini ve diğer verileri içeren bir oturum kaydı oluşturur, bunu bellekte, bir veritabanında ya da Redis gibi bir önbellekte saklar ve tarayıcıya bir cookie içinde uzun, rastgele bir oturum kimliği gönderir. Tarayıcı bu cookie'yi sonraki her isteğe otomatik olarak ekler ve sunucu oturumu bulmak için bu kimliği kullanır. Çıkış yapmak ya da zaman aşımını aşacak kadar etkinlik göstermemek oturumu siler.

Bir vestiyere benzer: paltonuzu bırakıp numaralı bir fiş alırsınız ve fiş yalnızca paltoyu tutan tezgâhla birlikte işe yarar. Bir oturum kimliğini çalan herkes kullanıcının kimliğine bürünebileceğinden, onu taşıyan cookie HttpOnly, Secure ve SameSite olarak işaretlenmeli, oturum sabitleme (session fixation) saldırılarını önlemek için girişten sonra yeni bir kimlik verilmelidir.

Oturumlar sıklıkla cookie'lerle ve token tabanlı kimlik doğrulamayla karıştırılır. Cookie yalnızca oturum kimliğini taşıyan araçtır; oturum verilerinin kendisi ise sunucuda durur. JWT gibi durumsuz token'larda kullanıcının bilgisi imzalı bir token'ın içinde taşınır; bu yüzden sunucunun hiçbir şeyi aramasına gerek kalmaz, ancak token süresi dolmadan iptal edilmesi çok daha zordur.

Önemli noktalar

  • Oturumlar, bir sunucunun durumsuz HTTP istekleri boyunca bir kullanıcıyı hatırlamasını sağlar.
  • Sunucu oturum verilerini saklar ve istemciye rastgele bir oturum kimliği verir.
  • Oturum kimliği genellikle HttpOnly, Secure bir cookie içinde taşınır.
  • Oturum, kullanıcı çıkış yaptığında ya da hareketsizlik zaman aşımından sonra sona erer.
  • Sunucu taraflı oturumları iptal etmek kolaydır; JWT gibi durumsuz token'ları iptal etmek değildir.

Örnek

Express.js'te sunucu taraflı oturumlarjavascript
// Using the express-session package
app.use(session({
  secret: process.env.SESSION_SECRET, // signs the session ID cookie
  resave: false, saveUninitialized: false,
  cookie: { httpOnly: true, secure: true, sameSite: "lax", maxAge: 30 * 60 * 1000 },
}));

app.post("/login", async (req, res) => {
  const user = await checkCredentials(req.body);
  if (!user) return res.sendStatus(401);
  req.session.userId = user.id; // stored on the server, not in the cookie
  res.send("Logged in");
});

app.get("/me", (req, res) => res.json({ userId: req.session.userId }));

Sık sorulan sorular

Oturum ile cookie arasındaki fark nedir?

Cookie, tarayıcıda saklanan ve isteklerle gönderilen küçük bir veri parçasıdır; oturum ise sunucuda saklanan, bir kullanıcının ziyaretine ait verilerdir. Çoğu kurulumda cookie yalnızca oturum kimliğini tutar ve sunucu oturumu bulmak için bu kimliği kullanır.

Kimlik doğrulama için oturum mu yoksa JWT mi kullanmalıyım?

Sunucu taraflı oturumlar basittir ve silinerek anında iptal edilebilir; bu da çoğu geleneksel web uygulamasına uygundur. JWT'ler her istekte arama yapmaktan kaçınır ve birçok servis tarafından paylaşılan API'lere uygun olabilir, ancak süreleri dolmadan iptal edilmeleri daha zordur.

Bir oturum ne kadar sürmelidir?

Riske bağlıdır. Bankacılık uygulamaları oturumları genellikle birkaç dakikalık hareketsizlikten sonra sonlandırır; düşük riskli uygulamalar ise kullanıcıları haftalarca açık tutabilir. Yaygın bir kalıp, kısa bir boşta kalma zaman aşımını mutlak bir azami ömürle birleştirir.

Sık karşılaştırılanlar

İlgili sayfalar

Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin

Daha fazla

Ayarlar