Cookie-файлы
Cookie — небольшие данные, которые сайт сохраняет в браузере пользователя и использует при последующих запросах.
- Cookie — как номерок в гардеробе. Гардеробщик не запоминает лично, а выдает номерок, по которому находит вещи.
- Cookie работают схоже: браузер хранит идентификатор, а сервер по нему понимает, кто выполняет запрос.
Появились из-за особенности протокола HTTP — он stateless (не хранит состояние). Каждый запрос сам по себе не знает ничего о предыдущем. Без cookie серверу сложно понимать:
- кто авторизован;
- что лежит в корзине;
- какие настройки выбрал пользователь;
- выполнял ли пользователь действия ранее.
Как работают
По шагам:
- Пользователь открывает сайт.
- Сервер отправляет браузеру заголовок
Set-Cookie. - Браузер сохраняет данные.
- При следующих запросах браузер автоматически добавляет заголовок
Cookie. - Сервер использует полученное значение.
Упрощенный пример:
Set-Cookie: session_id=abc123
Следующий запрос:
Cookie: session_id=abc123
Важно:
- cookie хранятся на стороне клиента;
- браузер сам управляет отправкой cookie;
- cookie привязаны к доменам и правилам доступа;
- срок хранения может быть ограничен.
Жизненный цикл
Создание → сохранение в браузере → использование в запро сах → обновление → удаление или истечение срока действия.
Cookie могут удаляться:
- пользователем вручную;
- браузером;
- сервером;
- после окончания срока действия.
Для чего используются
- Авторизация и сессии
После входа сервер выдает идентификатор сессии. Благодаря этому пользователь не авторизуется заново на каждой странице.
- Персонализация
Cookie позволяют сохранять язык интерфейса; тему оформления; настройки отображения; регион и тд
- Корзины интернет-магазинов
Позволяют хранить связь между пользователем и выбранными товарами.
- Аналитика. Для:
подсчета посетителей; отслеживания поведения; измерения конверсий; анализа пользовательских путей.
- Реклама и маркетинг.
Помогают показывать релевантную рекламу; ограничивать частоту показов; строить аудитории.
- A/B-тестирование
Позволяют закреплять пользователя за ва риантом эксперимента.
Какие бывают HTTP Cookie
| Тип Cookie | Назначение | Срок жизни | Ключевые особенности | Пример атрибутов |
|---|---|---|---|---|
| Session Cookie | Хранение временного состояния пользователя | До закрытия браузера | Не имеетExpires или Max-Age | Path=/; HttpOnly |
| Persistent Cookie | Долговременное хранение данных | До истечения срока действия | Сохраняется между сессиями браузера | Expires, Max-Age |
| Secure Cookie | Защита передачи данных | Любой | Передается только через HTTPS | Secure |
| HttpOnly Cookie | Защита от доступа через JavaScript | Любой | Недоступен черезdocument.cookie | HttpOnly |
| SameSite Cookie | Контроль межсайтовой передачи | Любой | Снижает риск CSRF | SameSite=Lax/Strict/None |
| Partitioned Cookie | Изоляция cookie между сайтами | Любой | Ограничивает межсайтовое отслеживание | Partitioned |
Собственные и сторонние Cookie
First-party Cookie (собственные)
Создаются сайтом, который пользователь открыл.
Примеры:
- авторизация;
- корзина;
- пользовательские настройки.
Third-party Cookie (сторонние)
Создаются сторонними доменами.
Примеры:
- рекламные сети;
- аналитические сервисы;
- виджеты.
Сторонние Cookie ограничивают из-за приватности
Проблемы:
- межсайтовое отслеживание;
- сбор пользовательских профилей;
- непрозрачность обработки данных.
Защита Cookie
Cookie часто содержат данные, влияющие на безопасность системы. Можно:
- Использовать Secure, предавать cookie только через HTTPS.
- Использовать HttpOnly, не нужно, чтобы JavaScript читал чувствительные cookie.
- Использовать SameSite, это снижает риск CSRF-атак.
- Ограничение срока жизни, меньше срок - меньше окно компрометации.
- Подписывать и шифровать данные
- Ротация идентификаторов, после логина или повышения привилегий полезно перевыпускать идентификаторы сессии.
Также могут быть связаны с обработкой пользовательских данных.
Важно:
- не хранить чувствительные данные; пароли; платежные данные и тд
- минимизировать объем информации.
Для многих сайтов требуется согласие пользователя на использование cookie.
Типовые угрозы
-
XSS (Злоумышленник внедряет код и пытается украсть данные)
-
Session Hijacking (Кража идентификатора сессии)
-
CSRF (Пользователь непреднамеренно выполняет запросы от своего имени)
Альтернативы Cookie
Local Storage
Механизм браузера для долговременного хранения данных в формате «ключ-значение».
- не отправляется на сервер автоматически;
- доступен через JavaScript;
- объем хранения обычно больше, чем у cookie.
Подходит лучше, чем Cookie: когда нужно хранить данные только на клиенте
Session Storage
Похож на Local Storage, но живет в рамках вкладки браузера.
- очищается после закрытия вкладки;
- не передается на сервер;
- доступен через JavaScript. Подходит лучше Cookie: когда данные нужны только в рамках вкладки
IndexedDB
Встроенная браузерная база данных.
- позволяет хранить большие объемы данных;
- поддерживает сложные структуры;
- подходит для офлайн-режима. Подходит лучше Cookie: когда требуются большие объемы данных
Server-side Sessions
Когда состояние пользователя хранится на сервере.
- клиент получает только идентификатор сессии;
- основная информация хранится на сервере;
- проще контролировать безопасность.
Подходит лучше Cookie: когда важна безопасность и контроль
Token-based подходы (JWT)
Механизм авто ризации, при котором данные пользователя содержатся внутри токена.
- часто используется в REST API;
- хорошо подходит для микросервисов;
- не требует хранения сессии на сервере.
Подходит лучше Cookie: когда приложение активно использует API
Fingerprinting
Создает идентификатор пользователя по параметрам устройства.
- работает без традиционных cookie;
- точность не гарантирована;
- активно ограничивается браузерами.
Подходит лучше Cookie: когда требуется дополнительная идентификация устройства
Влияние на интеграции
SSO (Single Sign-On)
После единого входа пользователь получает cookie сессии.
Что учитывать:
- домены и поддомены до лжны быть настроены корректно;
- срок жизни cookie влияет на длительность авторизации;
- ограничения SameSite могут нарушить сценарий входа между системами.
API
Браузер может автоматически отправлять cookie вместе с запросами.
Что учитывать:
- корректная настройка CORS;
- для кросс-доменных запросов необходимо учитывать SameSite и Secure;
- часть API вместо cookie использует JWT-токены.
Кросс-доменные сценарии
Например, портал работает на одном домене, а сервис — на другом.
Что учитывать:
- браузер может блокировать передачу cookie;
- сторонние cookie постепенно отключаются;
- интеграция может работать нестабильно в разных браузерах.
Встраиваемые сервисы и виджеты
Платежные формы;онлайн-чаты;аналитические счетчики; карты.
Что учитывать:
- многие виджеты используют сторонние cookie;
- современные браузеры ограничивают их работу;
- часть функций может перестать работать без дополнительной настройки.
Важное про Cookie
Cookie — не только техническая реализация. Они влияют на требования, безопасность и интеграции.
Что уточнять:
- Какие данные хранятся: что, зачем, кто использует
- Кто создает Cookie: frontend; backend; внешние сервисы.
- Срок жизни: время хранения; условия удаления; обновление.
- Ограничения безопасности: проверять Secure; HttpOnly; SameSite.