🪪 Токен, сессия и кука: Как сайты запоминают, что вы — это

Кратко: HTTP — протокол без памяти. Каждый ваш клик — как звонок незнакомцу: вы не помните, что говорили 5 минут назад, и сайт не помнит вас. Чтобы это исправить, разработчики придумали куки, сессии и токены. Кука — это бумажка с номерком, которую сервер даёт браузеру и просит носить с собой при каждом визите. Сессия — это та же кука, но по номерку сервер хранит на своей стороне целую карточку с вашей историей: что вы смотрели, что клали в корзину, когда залогинились. Токен — это самодостаточный паспорт: сервер выдаёт вам подписанный документ, где написано, кто вы и на что имеете право, и больше ничего не хранит.

🍪 Кука: Бумажка с номерком Кука — это маленький текст, который сервер отправляет браузеру и просит сохранить . При каждом следующем запросе браузер автоматически прикладывает эту куку, и сервер понимает: «А, это снова вы». Куки не шифруются, их видно в браузере и можно подделать . Куки бывают сессионными (умирают при закрытии браузера) и постоянными (с датой истечения). Обычный размер — не больше 4 КБ, а на один сайт можно поставить не больше 20–50 кук . Используется: чтобы запомнить язык сайта, содержимое корзины, информацию о том, залогинены ли вы. Но класть в куку пароль или ID пользователя напрямую нельзя — это можно подделать .

🗄️ Сессия: Карточка на ресепшене Сессия — улучшение куки. Сервер выдаёт вам не просто случайный ID, а хранит на своей стороне файл с вашими данными . Кука содержит только этот идентификатор (session ID), который подделать почти невозможно . При каждом запросе браузер присылает session ID, сервер находит ваш файл и понимает: кто вы, что лежит в корзине, когда вы в последний раз что-то делали. Проблемы сессий: если серверов несколько (балансировка нагрузки), сессия, созданная на одном сервере, недоступна другому — придётся синхронизировать через базу данных (Redis) или привязывать пользователя к одному серверу . Также сессии жрут память на сервере и требуют очистки старых данных.

🪪 Токен: Паспорт без базы данных Токен не требует хранить данные на сервере. Вся информация зашита прямо в нём: кто вы, до какого момента действует токен, какие права имеете. Сервер подписывает токен своим секретным ключом — подделать его нельзя . Самый популярный формат — JWT. Он состоит из трёх частей, которые удобно передавать через заголовок Authorization: Bearer <токен> . Преимущества: · Сервер не хранит сессии — экономия памяти и простота масштабирования . · Токен можно использовать в мобильных приложениях и на разных сайтах — он не привязан к браузеру . Недостатки: · Токен нельзя отозвать, пока не истечёт срок (решается коротким временем жизни и refresh-токенами) . · Если хранить его в localStorage (а не в куках), он доступен любому скрипту на странице — XSS-атака сольёт ваш паспорт .

🧠 Главный вывод Куки запоминают, сессии узнают, токены удостоверяют. Кука — самый простой способ «не забыть» пользователя. Сессия — улучшенная кука, где чувствительные данные хранит сервер. Токен — лучший выбор, когда ваш сервис растёт, а серверов становится несколько.

#токен #сессия #кука #jwt #аутентификация #веббезопасность #cookies #session

🪪 Токен, сессия и кука: Как сайты запоминают, что вы — это | Сетка — социальная сеть от hh.ru