Middle
Veb ilovalarida sessiya qanday ishlash mexanizmi?
sobes.tech AI
AIdan javob
Sessiya mexanizmi foydalanuvchining holatini HTTP so'rovlar orasida saqlashga asoslangan bo'lib, bu so'rovlar o'z tabiatida stateless. Bu, noyob sessiya identifikatori yordamida amalga oshiriladi.
Asosiy bosqichlar:
- Foydalanuvchining birinchi so'rovi: Foydalanuvchi veb-serverga so'rov yuboradi.
- Sessiya yaratish: Agar so'rov noma'lum foydalanuvchidan (sessiya identifikatori bo'lmagan) kelgan bo'lsa, server o'z tomonida yangi sessiya yaratadi (xotirada, ma'lumotlar bazasida, fayl tizimida) va noyob sessiya identifikatorini ishlab chiqaradi.
- Identifikatorni mijozga yuborish: Server bu sessiya identifikatorini cookie (
Set-Cookie: SESSIONID=xyz; path=/) shaklida yuboradi. - Mijozda saqlash: Brauzer bu cookie-ni saqlaydi va uni barcha keyingi so'rovlarda ayni domen bilan yuboradi (
Cookie: SESSIONID=xyz). - Serverda identifikatsiya: Har bir keyingi so'rovda, sessiya identifikatorini o'z ichiga olgan cookie qabul qilinganda, server bu identifikator yordamida mos sessiyani topadi va saqlangan foydalanuvchi ma'lumotlarini oladi.
- Sessiyani yakunlash: Sessiya faoliyatsizlik, foydalanuvchi tomonidan chiqish (logout) yoki brauzerni yopish bilan tugashi mumkin (agar cookie ning amal qilish muddati bo'lmasa).
Autorizatsiya ma'lumotlarini saqlash uchun sessiya misoli:
// Java Servlets misoli
HttpSession session = request.getSession(); // Sessiyani olish yoki yaratish
// Foydalanuvchi ruxsat etilganligini tekshirish
if (session.getAttribute("loggedInUser") == null) {
// Foydalanuvchi ruxsat etilmagan, kirish sahifasiga yo'naltirish
response.sendRedirect("/login");
} else {
// Foydalanuvchi ruxsat etilgan, ma'lumotlarni olish
User user = (User) session.getAttribute("loggedInUser");
// ... foydalanuvchi ma'lumotlari bilan ishlash
}
Sessiyalarni saqlash:
- Server xotirasida (kichik ilovalar uchun mos).
- Server fayl tizimida.
- Ma'lumotlar bazasida (klassik va kengaytiriladigan variant).
- Tarqatilgan cache'larda (Redis, Memcached) ko'p serverlar uchun kengaytirish.
Xavfsizlik:
- "secure" va "HttpOnly" flaglaridan foydalanish.
- Muvaffaqiyatli autentifikatsiyadan so'ng sessiya ID'sini yangilash.
- Sessiya uchun mos vaqt chegarasini belgilash.
- Sessiya hijacking (sessiya o'g'irlash) hujumlariga qarshi himoya qilish.