Sobes.tech
Middle

რა არის სესიის მუშაობის მექანიზმი ვებ-აპლიკაციებში?

sobes.tech AI

პასუხი AI-სგან

სესიის მუშაობის მექანიზმი დაფუძნებულია მომხმარებლის მდგომარეობის შენახვაზე HTTP-შეტყობინებათა შორის, რომლებიც თავისთავად სტატელესია. ეს მიღწეულია უნიკალური სესიის იდენტიფიკატორის გამოყენებით:

ძირითადი ნაბიჯები:

  1. მომხმარებლის პირველი მოთხოვნა: მომხმარებელი აგზავნის მოთხოვნას ვებ-სერვერზე.
  2. სესიის შექმნა: თუ მოთხოვნა უცნობ მომხმარებელზე მოდის (არ აქვს სესიის იდენტიფიკატორი), სერვერი ქმნის ახალ სესიას თავის მხარეს (მეხსიერებაში, მონაცემთა ბაზაში, ფაილურ სისტემაში) და გენერირებს უნიკალურ სესიის იდენტიფიკატორს.
  3. იდენტიფიკატორის გადაცემა მომხმარებელზე: სერვერი ამ იდენტიფიკატორს აგზავნის cookie-ის სახით (Set-Cookie: SESSIONID=xyz; path=/).
  4. შენახვა მომხმარებელზე: ბრაუზერი ინახავს ამ cookie-ს და აგზავნის მას ყველა შემდგომ მოთხოვნასთან ერთად იგივე დომენზე (Cookie: SESSIONID=xyz).
  5. სერვერზე იდენტიფიკაცია: ყოველი შემდეგი მოთხოვნის დროს, თუ cookie-ში შედის სესიის იდენტიფიკატორი, სერვერი იყენებს მას შესაბამის სესიის პოვნასა და შენახული მონაცემების მიღებას.
  6. სესიის დასრულება: სესია შეიძლება დასრულდეს აქტივობის დროის გასვლის, მომხმარებლის პირდაპირი გამოსვლის (logout) ან ბრაუზერის დახურვის დროს (თუ cookie-ს ვადა არ არის განსაზღვრული).

მაგალითი — ავტორიზაციის ინფორმაციის შენახვა სესიის გამოყენებით:

// Java Servlets-ის მაგალითი
HttpSession session = request.getSession(); // სესიის მიღება ან შექმნა

// შემოწმება, არის თუ არა მომხმარებელი ავტორიზებული
if (session.getAttribute("loggedInUser") == null) {
    // მომხმარებელი არ არის ავტორიზებული, გადამისამართება შესვლის გვერდზე
    response.sendRedirect("/login");
} else {
    // მომხმარებელი ავტორიზებულია, მონაცემების მიღება
    User user = (User) session.getAttribute("loggedInUser");
    // ... მუშაობა მომხმარებლის მონაცემებთან
}

სესიის შენახვის ადგილები:

  • სერვერის მეხსიერებაში (მცირეწლოვანი აპლიკაციებისათვის)
  • სერვერის ფაილურ სისტემაში
  • მონაცემთა ბაზაში (კლასიკური ვარიანტი, სკალირებადი)
  • განაწილებულ კეშებში (Redis, Memcached) — მრავალსერვერული სკალირებისთვის

უსაფრთხოება:

  • "secure" და "HttpOnly" ფლაგების გამოყენება cookie-ს სესიისთვის
  • სესიის ID-ის გადათვლა წარმატებული ავტორიზაციის შემდეგ
  • შესაბამისი დროის სესიის განსაზღვრა
  • დაცვა Session Hijacking-ისგან (სესიის იდენტიფიკატორის გადაცემა მოპარვით)