⌗Oddiy cookie yoki localStorageda saqlash:
Cookies.set('token', token)
bu holatda oddiy odam yoki hacker shunchaki u odamni akkauntiga kirish uchun tokenni copy qiladi va o'zining kompyuterida cookie'da yoki localStorageda tokenni o'rniga o'sha boshqani akkaunti tokenini kiritsa va browserni refresh qilsa site uni avtamatik tarzda o'sha odam deb o'ylab platformaga kirgizadi, va hacker u odamni akkauntiga to'liq egalik qila oladi
⌗Http cookie:
res.cookie("token", token, {
httpOnly: true, // JS o'qiy olmaydi
secure: true, // faqat HTTPS
sameSite: "strict", // CSRF himoyasi
})
bu yerda eng katta farq — frontend bu tokenni ko‘ra olmaydi ham, o‘zgartira olmaydi ham
ya’ni:
- document.cookie orqali o‘qib bo‘lmaydi
- localStorage ga o‘xshab copy qilib bo'lmaydi
consoleorqali boshqa token qo‘yib “fake login” qilib bo'lmaydi
User login qiladi
↓
Backend → httpOnly cookie yuboradi
↓
Browser yashirin saqlaydi (JS ko'rmaydi)
↓
Har requestda browser o'zi avtomatik yuboradi
↓
Backend: req.cookies.token
⌗Frontend request:
fetch("/api/profile", {
credentials: "include",
})