Как работают куки и сессии на примере аутентификации
(продолжение предыдущего поста)
Как работают куки на примере аутентификации
1. Первый запрос (REQUEST #1) — вход в систему (log in):
- Пользователь отправляет запрос на авторизацию (вход в систему).
- Backend-сервер проверяет учётные данные (аутентификация — *authenticate*).
- Если аутентификация успешна, сервер генерирует куки (cookie) и отправляет их обратно пользователю. Куки — это небольшой фрагмент данных, который хранится на стороне клиента (браузера).
2. Второй запрос (REQUEST #2) — просмотр страницы (view page):
- При последующем запросе (например, при попытке просмотреть страницу) браузер автоматически отправляет серверу ранее полученные куки вместе с запросом (*request + cookie*).
- Сервер проверяет полученные куки и, если они валидны, распознаёт пользователя.
- Сервер возвращает запрошенные данные с сообщением «welcome back, here’s the data» («добро пожаловать обратно, вот ваши данные»).
Суть: куки хранят состояние сессии на стороне клиента. Сервер доверяет данным, переданным в куках, и на их основе определяет, авторизован ли пользователь.
Как работают сессии на примере аутентификации
1. Первый запрос (REQUEST #1) — вход в систему (log in):
- Пользователь отправляет запрос на авторизацию.
- Backend-сервер выполняет аутентификацию (*authenticate*).
- Если аутентификация пройдена, сервер:
- создаёт сессию (уникальный сеанс работы пользователя) и сохраняет её данные в Session Store (хранилище сессий — отдельный компонент или база данных);
- генерирует куки с ID сессии (*here’s a cookie with session id*) и отправляет их клиенту. ID сессии — это ссылка на данные сессии, хранящиеся на сервере.
2. Второй запрос (REQUEST #2) — просмотр страницы (view page):
- При следующем запросе браузер отправляет кукис ID сессии (*request + cookie*).
- Сервер извлекает ID сессии из куки и обращается к Session Store для проверки существования и валидности сессии (*verify session*).
- Если сессия действительна, сервер возвращает запрошенные данные с сообщением «welcome back, here’s the data».
Суть: сессии хранят состояние на стороне сервера, а куки лишь передают ID сессии. Сервер не доверяет напрямую кукам, а каждый раз проверяет актуальность сессии в Session Store.
### Ключевые отличия
- Место хранения данных:
- Куки: данные хранятся на клиенте (браузере).
- Сессии: данные хранятся на сервере (Session Store), а на клиенте — только ID сессии.
- Безопасность:
- Куки менее безопасны, так как данные доступны на клиенте и могут быть подвержены атакам (например, CSRF).
- Сессии более безопасны, так как критичные данные не хранятся на клиенте.
- Объём данных:
- Куки имеют ограничение по размеру (обычно до 4 КБ).
- В сессиях можно хранить больше данных, так как они хранятся на сервере.
- Управление сроком действия:
- Куки могут быть постоянными или сессионными (удаляются при закрытии браузера).
- Сессии обычно имеют ограниченный срок действия и автоматически завершаются после бездействия.
Post #3530
1.64K