Sobes.tech
Middle

Mis on sessiooni töömehhanism veebirakendustes?

sobes.tech AI

Vastus AI-lt

Sesiooni töömehhanism põhineb kasutaja oleku säilitamisel HTTP-päringute vahel, mis on oma olemuselt stateless. Seda saavutatakse unikaalse sessiooni identifikaatori kasutamisega:

Peamised sammud:

  1. Kasutaja esimene päring: Kasutaja saadab päringu veebiserverile.
  2. Sessiooni loomine: Kui päring on tundmatult kasutajalt (ilma sessiooni identifikaatorita), loob server uus sessiooni oma poolel (mälus, andmebaasis, failisüsteemis) ja genereerib unikaalse sessiooni identifikaatori.
  3. Identifikaatori saatmine kliendile: Server saadab selle identifikaatori küpsise (cookie) kaudu (Set-Cookie: SESSIONID=xyz; path=/).
  4. Salvestamine kliendi poolel: Brauser salvestab selle küpsise ja saadab selle kõigi järgnevate päringutega sama domeeni alla (Cookie: SESSIONID=xyz).
  5. Tuvastamine serveris: Iga järgnev päring koos küpsisega, mis sisaldab sessiooni identifikaatorit, kasutab server seda, et leida vastav sessioon ja saada salvestatud kasutaja andmed.
  6. Sessiooni lõpetamine: Sessioon võib lõppeda aktiivsuse aja möödumisel, kasutaja väljaregistreerimisel (logout) või brauseri sulgemisel (kui küpsise kehtivusaeg ei ole määratud).

Näide — sessiooni kasutamine autoriseerimisinfo salvestamiseks:

// Näide Java Servlets
HttpSession session = request.getSession(); // Saada või luua sessioon

// Kontrollida, kas kasutaja on sisse logitud
if (session.getAttribute("loggedInUser") == null) {
    // Kasutaja pole sisse logitud, suunata sisselogimislehele
    response.sendRedirect("/login");
} else {
    // Kasutaja on sisse logitud, saada andmed
    User user = (User) session.getAttribute("loggedInUser");
    // ... töötada kasutaja andmetega
}

Sessiooni salvestamise kohad:

  • Serveri mälus (sobib väikestele rakendustele)
  • Serveri failisüsteemis
  • Andmebaasis (klassikaline, skaleeritav)
  • Jaotatud vahemäludes (Redis, Memcached) — mitme serveri skaleerimiseks

Turvalisus:

  • Kasutades "secure" ja "HttpOnly" lippe küpsistele
  • ID uuendamine pärast edukat autentimist
  • Sobiva sessiooni aja määramine
  • Kaitse Session Hijackingi eest (sessiooni identifikaatori pealtvarastamine)