Перейти к основному содержимому

Cookie-файлы

Cookie — небольшие данные, которые сайт сохраняет в браузере пользователя и использует при последующих запросах.

  • Cookie — как номерок в гардеробе. Гардеробщик не запоминает лично, а выдает номерок, по которому находит вещи.
  • Cookie работают схоже: браузер хранит идентификатор, а сервер по нему понимает, кто выполняет запрос.

Появились из-за особенности протокола HTTP — он stateless (не хранит состояние). Каждый запрос сам по себе не знает ничего о предыдущем. Без cookie серверу сложно понимать:

  • кто авторизован;
  • что лежит в корзине;
  • какие настройки выбрал пользователь;
  • выполнял ли пользователь действия ранее.

Как работают

По шагам:

  1. Пользователь открывает сайт.
  2. Сервер отправляет браузеру заголовок Set-Cookie.
  3. Браузер сохраняет данные.
  4. При следующих запросах браузер автоматически добавляет заголовок Cookie.
  5. Сервер использует полученное значение.

Упрощенный пример:

Set-Cookie: session_id=abc123

Следующий запрос:
Cookie: session_id=abc123

Важно:

  • cookie хранятся на стороне клиента;
  • браузер сам управляет отправкой cookie;
  • cookie привязаны к доменам и правилам доступа;
  • срок хранения может быть ограничен.

Жизненный цикл

Создание → сохранение в браузере → использование в запросах → обновление → удаление или истечение срока действия.

Cookie могут удаляться:

  • пользователем вручную;
  • браузером;
  • сервером;
  • после окончания срока действия.

Для чего используются

  • Авторизация и сессии

После входа сервер выдает идентификатор сессии. Благодаря этому пользователь не авторизуется заново на каждой странице.

  • Персонализация

Cookie позволяют сохранять язык интерфейса; тему оформления; настройки отображения; регион и тд

  • Корзины интернет-магазинов

Позволяют хранить связь между пользователем и выбранными товарами.

  • Аналитика. Для:

подсчета посетителей; отслеживания поведения; измерения конверсий; анализа пользовательских путей.

  • Реклама и маркетинг.

Помогают показывать релевантную рекламу; ограничивать частоту показов; строить аудитории.

  • A/B-тестирование

Позволяют закреплять пользователя за вариантом эксперимента.

Тип CookieНазначениеСрок жизниКлючевые особенностиПример атрибутов
Session CookieХранение временного состояния пользователяДо закрытия браузераНе имеетExpires или Max-AgePath=/; HttpOnly
Persistent CookieДолговременное хранение данныхДо истечения срока действияСохраняется между сессиями браузераExpires, Max-Age
Secure CookieЗащита передачи данныхЛюбойПередается только через HTTPSSecure
HttpOnly CookieЗащита от доступа через JavaScriptЛюбойНедоступен черезdocument.cookieHttpOnly
SameSite CookieКонтроль межсайтовой передачиЛюбойСнижает риск CSRFSameSite=Lax/Strict/None
Partitioned CookieИзоляция cookie между сайтамиЛюбойОграничивает межсайтовое отслеживаниеPartitioned

Создаются сайтом, который пользователь открыл.

Примеры:

  • авторизация;
  • корзина;
  • пользовательские настройки.

Создаются сторонними доменами.

Примеры:

  • рекламные сети;
  • аналитические сервисы;
  • виджеты.

Сторонние Cookie ограничивают из-за приватности

Проблемы:

  • межсайтовое отслеживание;
  • сбор пользовательских профилей;
  • непрозрачность обработки данных.

Cookie часто содержат данные, влияющие на безопасность системы. Можно:

  • Использовать Secure, предавать cookie только через HTTPS.
  • Использовать HttpOnly, не нужно, чтобы JavaScript читал чувствительные cookie.
  • Использовать SameSite, это снижает риск CSRF-атак.
  • Ограничение срока жизни, меньше срок - меньше окно компрометации.
  • Подписывать и шифровать данные
  • Ротация идентификаторов, после логина или повышения привилегий полезно перевыпускать идентификаторы сессии.

Также могут быть связаны с обработкой пользовательских данных.

Важно:

  • не хранить чувствительные данные; пароли; платежные данные и тд
  • минимизировать объем информации.

Для многих сайтов требуется согласие пользователя на использование cookie.

Типовые угрозы

  • XSS (Злоумышленник внедряет код и пытается украсть данные)

  • Session Hijacking (Кража идентификатора сессии)

  • CSRF (Пользователь непреднамеренно выполняет запросы от своего имени)


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: frontend; backend; внешние сервисы.
  • Срок жизни: время хранения; условия удаления; обновление.
  • Ограничения безопасности: проверять Secure; HttpOnly; SameSite.

Что фиксировать в требованиях

Минимум:

  • имя cookie;
  • назначение;
  • срок хранения;
  • область действия;
  • правила удаления;
  • требования безопасности.
  • Cookie предназначены для хранения состояния и пользовательских данных.
  • Кэш - для ускорения работы за счет хранения ресурсов.

Различия:

ХарактеристикаCookieКэш
НазначениеСостояние пользователяУскорение загрузки
Автоматически отправляется серверуДаНет
Обычно хранитИдентификаторы, настройкиФайлы и ресурсы
Основная цельИдентификацияПроизводительность

Типичная ошибка — пытаться использовать кэш для хранения пользовательского состояния или cookie для хранения больших объемов данных.

Материалы

  1. Что такое Cookie и зачем они нужны
  2. Ультимативный гайд по HTTP. Cookies и CORS
  3. Что такое cookie?
  4. Что такое cookie и для чего они нужны
  5. [Перевод] Всё о файлах cookie и их безопасности
  6. С чем едят cookies. Технический и юридический ликбез для маркетологов
  7. Куки и будущее без них. Рабочие альтернативы для таргетинга перед блокировкой 3rd party s-chem-edyat-cookies-tekhnicheskiy-i-yuridicheskiy-likbez-dlya-marketologov
  8. Почему нужно чистить cookies
  9. От согласия на использование Cookie, до выполнения команд: реальный вектор от SQLi + утечки персональных данных до RCE
  10. Как настроить баннер cookie-согласия по требованиям GDPR, Google Consent Mode и законодательства разных стран
  11. Защита сайта от кражи авторизационной cookie
  12. Работа с куки-файлами хуже сапёрного дела
  13. Android. Принять себя или Cookie?
  14. Всё о cookies в свете GDPR и не только
  15. Жизнь как коробка с печеньками: что скрывают cookie-баннеры
  16. Синхронизация Cookie между SSP и DSP: как это работает и почему это важно для ваших рекламных кампаний

Видео

  1. Ускоряем UI Автотесты с помощью подстановки Cookies | Java QA Automation
  2. Браузерные хранилища данных: localStorage, sessionStorage, cookie, IndexedDB. Смена темы на сайте
  3. Как работают cookie и сессии в PHP
  4. Сессии, cookie, API ключ и токены - I. Архитектура веб-приложений I.III Слой безопасности
  5. Сookies: что это такое и зачем они нужны | SEMANTICA