Sobes.tech
Middle

Veb tətbiqlərdə sessiyanın işləmə mexanizmi nədir?

sobes.tech Süni İntellekt

AI-dan cavab

Sessiya mexanizmi istifadəçinin vəziyyətini HTTP sorğuları arasında saxlamağa əsaslanır, çünki bu sorğular öz təbiətinə görə statelessdir. Bu, unikal sessiya identifikatorunun istifadəsi ilə həyata keçirilir.

Əsas addımlar:

  1. İstifadəçinin ilk sorğusu: İstifadəçi veb serverə sorğu göndərir.
  2. Sessiya yaradılması: Əgər sorğu tanınmayan istifadəçidən (sessiya identifikatoru olmayan) gəlirsə, server öz tərəfində (yaddaşda, verilənlər bazasında, fayl sistemində) yeni sessiya yaradır və unikal sessiya identifikatoru生成 edir.
  3. İdentifikatorun müştəriyə göndərilməsi: Server bu sessiya identifikatorunu cookie (Set-Cookie: SESSIONID=xyz; path=/) şəklində göndərir.
  4. Müştəridə saxlanması: Brauzer bu cookie-ni saxlayır və bütün növbəti sorğularla eyni domenə (Cookie: SESSIONID=xyz) göndərir.
  5. Serverdə tanıma: Hər bir növbəti sorğuda, sessiya identifikatorunu ehtiva edən cookie alındıqda, server bu identifikatoru istifadə edərək müvafiq sessiyanı tapır və saxlanmış istifadəçi məlumatlarını əldə edir.
  6. Sessiyanın sonlandırılması: Sessiya, inaktivlik, istifadəçinin çıxışı və ya brauzerin bağlanması ilə sona çatdırıla bilər (əgər cookie-nin müddəti bitməyibsə).

İstifadəçi məlumatlarının saxlanması nümunəsi:

// Java Servlets nümunəsi
HttpSession session = request.getSession(); // Sessiyanı əldə et və ya yarat

// İstifadəçinin daxil olub-olmadığını yoxla
if (session.getAttribute("loggedInUser") == null) {
    // İstifadəçi daxil olmayıb, giriş səhifəsinə yönləndir
    response.sendRedirect("/login");
} else {
    // İstifadəçi daxil olub, məlumatları əldə et
    User user = (User) session.getAttribute("loggedInUser");
    // ... istifadəçi məlumatları ilə işləmə
}

Sessiyaların saxlanması:

  • Serverin yaddaşında (kiçik tətbiqlər üçün uyğundur).
  • Serverin fayl sistemində.
  • Verilənlər bazasında (klassik və miqyaslana bilən variant).
  • Paylanmış cache-lərdə (Redis, Memcached) çoxsaylı serverlər üçün miqyaslandırma.

Təhlükəsizlik:

  • "secure" və "HttpOnly" bayraqlarından istifadə.
  • Uğurlu autentifikasiya sonrası sessiya ID-sinin yenidən yaradılması.
  • Sessiya üçün uyğun vaxt limiti təyin edilməsi.
  • Sessiya oğurluğuna qarşı qoruma (Session Hijacking).