TGViewer
METANIT.COM METANIT.COM @devnull22 · 5.83K subscribers
Post #3530 1.64K
Как работают куки и сессии на примере аутентификации
(продолжение предыдущего поста)

Как работают куки на примере аутентификации

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 КБ).
- В сессиях можно хранить больше данных, так как они хранятся на сервере.
- Управление сроком действия:
- Куки могут быть постоянными или сессионными (удаляются при закрытии браузера).
- Сессии обычно имеют ограниченный срок действия и автоматически завершаются после бездействия.
Telegram METANIT.COM Как работают куки и сессии на примере аутентификации (продолжение в следующем посте)
  • 👍 11
  • ❤ 7
  • 🤝 2
More from @devnull22
  1. Mar 19, 2026Добавил в руководство по JavaScript главу про работу с датами и временем с помощью Tempora…
  2. Mar 19, 2026Роскомнадзор перестал полностью справляться с блокировками в интернете Роскомнадзор (РКН)…
  3. Mar 18, 2026Минцифры опубликовало законопроект о государственном регулировании ИИ. Закон должен начать…
  4. Mar 18, 2026Microsoft призвала разработчиков создавать ИИ-приложения в Electron на Windows 11 Microsof…
  5. Mar 18, 2026Oracle анонсировала проект Detroit, который будет развиваться в составе OpenJDK и нацелен…
  6. Mar 17, 2026Вышла новая версия платформы Java - JDK 26. JDK 26 — краткосрочная версия с поддержкой Pre…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →