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:
- Kasutaja esimene päring: Kasutaja saadab päringu veebiserverile.
- 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.
- Identifikaatori saatmine kliendile: Server saadab selle identifikaatori küpsise (cookie) kaudu (
Set-Cookie: SESSIONID=xyz; path=/). - Salvestamine kliendi poolel: Brauser salvestab selle küpsise ja saadab selle kõigi järgnevate päringutega sama domeeni alla (
Cookie: SESSIONID=xyz). - 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.
- 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)