Yan yana
CookievsOturum
Cookie ile oturum (session) arasındaki fark nedir?
Güncellendi 2 dk okuma7 fark
Kısaca
Cookie, tarayıcının saklayıp her istekte gönderdiği küçük veridir; oturum ise sunucunun ziyaretçi için tuttuğu durumdur, cookie'deki bir kimlikle bulunur.
Cookie
Cookie, bir web sitesinin tarayıcıdan saklamasını ve sonraki isteklerle geri göndermesini istediği, çoğunlukla oturum açık tutmak için kullanılan küçük veridir.
Cookie sayfasını okuOturum
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.
Oturum sayfasını okuCookie ve Oturum karşılaştırması
| Özellik | Cookie | Oturum |
|---|---|---|
| Verinin durduğu yer | Tarayıcıda | Sunucuda |
| Tarayıcının tuttuğu | Verinin kendisi | Yalnızca rastgele bir oturum kimliği, genellikle bir cookie'de |
| Boyut | Cookie başına yaklaşık 4 KB | Yalnızca sunucunun depolamasıyla sınırlı |
| Kullanıcıya görünür mü | Evet: tarayıcıda okunabilir ve değiştirilebilir | Hayır: kullanıcı yalnızca kimliği görür |
| Ömür | Son kullanma tarihine kadar ya da tarayıcı kapanana kadar | Sunucu sonlandırana ya da zaman aşımına uğrayana kadar |
| Sunucuya maliyeti | Yok; hiçbir şey saklanmaz | Her istekte okunan bellek ya da paylaşılan bir depo |
| Tipik kullanım | Tercihler, izin seçimleri, oturum kimliğini taşımak | Girişler, alışveriş sepetleri, çok adımlı formlar |
Fark, açıklamalı
Cookie, theme=dark gibi bir ad ve değerdir; sunucu bunu Set-Cookie başlığıyla tarayıcıdan saklamasını ister. Tarayıcı o andan itibaren, süresi dolana ya da silinene kadar, o siteye yaptığı her istekte cookie'yi kendiliğinden geri gönderir. Oturum ise sunucunun bir ziyaretçi hakkında hatırladıklarıdır; kimin giriş yaptığı ya da sepette ne olduğu gibi bilgiler sunucu belleğinde, bir veritabanında ya da Redis gibi bir depoda tutulur.
Temel fark, verinin nerede durduğudur. Cookie'nin içeriği tarayıcıyla sunucu arasında gidip gelir; bu yüzden her cookie yaklaşık 4 KB ile sınırlıdır ve değerini kullanıcı görebilir, değiştirebilir. Oturum verisi sunucuda kalır; tarayıcı yalnızca uzun, rastgele bir oturum kimliği tutar, sunucu da her istekte veriyi bu kimlikle bulur.
Genellikle birbirine rakip değil, birlikte çalışırlar. Oturum kimliğini taşımanın en yaygın yolu HttpOnly, Secure ve SameSite işaretli bir cookie'dir; böylece sayfadaki betikler onu okuyamaz ve yalnızca HTTPS üzerinden gönderilir. Sunucu tarafı oturumların alternatifi, JWT'lerin yaptığı gibi imzalı veriyi token'ın içine koymaktır; bu aramayı ortadan kaldırır ama bir girişi süresi dolmadan sonlandırmayı zorlaştırır.
Sık yapılan bir yanlış, cookie'lerle oturumların kullanıcıyı içeri almanın birbirine rakip iki yolu olduğu düşüncesidir. Cookie tarayıcıdaki bir saklama ve taşıma mekanizması, oturum ise sunucudaki bir durumdur; tipik bir giriş ikisini birlikte kullanır. Parola ya da kullanıcı rolü gibi gizli bilgileri düz bir cookie'de saklamak bir güvenlik hatasıdır.
Hangisini kullanmalısınız?
Cookie şu durumlarda doğru seçim:
- Dil ya da tema seçimi gibi küçük ve gizli olmayan bir değeri hatırlamanız gerekiyor.
- Değer, sunucuda hiçbir şey saklanmadan da kalıcı olmalı.
- Tarayıcıyla sunucu arasında bir oturum kimliği ya da token taşıyorsunuz.
Oturum şu durumlarda doğru seçim:
- Kimin giriş yaptığı ya da neler yapabileceği gibi hassas bir bilgi tutuyorsunuz.
- Veri birkaç kilobayttan büyük.
- Bir girişi sunucu tarafında anında sonlandırabilmeniz gerekiyor.
Bir ziyaretçiyi hatırlamak (Express ile Node.js)
// Cookie: the value itself lives in the browser
app.get("/prefs", (req, res) => {
res.cookie("theme", "dark", { maxAge: 365 * 24 * 60 * 60 * 1000, sameSite: "lax" });
res.send("Saved");
});
// Later requests carry it back (read with cookie-parser):
// req.cookies.theme === "dark"// Session: the data stays on the server, the browser gets only an ID
import session from "express-session";
app.use(session({
secret: process.env.SESSION_SECRET,
resave: false,
saveUninitialized: false,
cookie: { httpOnly: true, secure: true, sameSite: "lax" },
}));
app.post("/login", (req, res) => {
req.session.userId = 42; // stored server-side
res.send("Logged in");
});Sık sorulan sorular
Oturumlar cookie'lerde mi saklanır?
Genellikle yalnızca oturum kimliği saklanır. Oturum verisinin kendisi sunucuda kalır; cookie yalnızca sunucuya bu tarayıcıya hangi kaydın ait olduğunu söyler.
Cookie'ler giriş için güvenli mi?
Rastgele bir oturum kimliği tutan cookie, HttpOnly, Secure ve SameSite olarak işaretlendiğinde güvenlidir. Parolaları, rolleri ya da güvenilmesi gereken başka verileri okunabilir bir cookie'ye koymak ise güvenli değildir.
Tarayıcı kapanınca oturuma ne olur?
Cookie'ye bağlıdır. Son kullanma tarihi olmayan bir oturum cookie'si tarayıcı kapanınca silinir ve kullanıcı açısından oturum biter; sunucu da kendi kopyasını oturum zaman aşımına uğradığında temizler.