Что такое сессия?
Продвинутые темы
Сессия (session) — это способ сохранить состояние пользователя между HTTP-запросами, поскольку сам HTTP не хранит состояние (stateless).
Проблема
HTTP stateless: каждый запрос независим, сервер «не помнит» пользователя. Сессия решает это, связывая запросы одного пользователя.
Как работает серверная сессия
- Пользователь логинится → сервер создаёт сессию и хранит её данные (в памяти/Redis/БД).
- Сервер выдаёт session ID в cookie.
- С каждым запросом браузер шлёт cookie с session ID.
- Сервер по ID находит данные сессии — узнаёт пользователя.
Set-Cookie: sessionId=abc; HttpOnly; Secure; SameSite=LaxСессия против JWT
- Серверная сессия — состояние на сервере, cookie с ID; легко отозвать, но нужно хранилище (stateful).
- JWT — состояние в токене, сервер не хранит сессию (stateless); масштабируется, но сложнее отзывать.
Безопасность
- Session ID в
HttpOnlycookie (защита от XSS). SameSite(защита от CSRF),Secure.- Срок жизни, инвалидация при логауте.
Коротко для собеседования
Сессия хранит состояние пользователя между stateless HTTP-запросами: сервер создаёт сессию, выдаёт session ID в cookie, по нему узнаёт пользователя. Это stateful-подход (данные на сервере), в отличие от stateless JWT. Защита — HttpOnly/Secure/SameSite.