HTTP-куки: назначение, виды и безопасность¶
Cookie (от англ. cookie — печенье; также HTTP-куки, веб-куки) — это небольшой фрагмент данных, отправляемый веб-сервером и хранимый на компьютере пользователя. Веб-браузер или другой клиент сохраняет этот фрагмент и отправляет его обратно на сервер при каждом последующем запросе к соответствующему веб-ресурсу. Cookie используются для идентификации пользователя, сохранения его настроек, отслеживания сессии и сбора статистики о поведении посетителей на сайте.
¶История
Технология cookie была разработана в 1994 году сотрудником компании Netscape Communications Лу Монтулли. Первоначально она предназначалась для реализации корзины покупок в интернет-магазине, работающем на сервере Netscape. Идея заключалась в том, чтобы сохранять состояние сессии между отдельными HTTP-запросами, поскольку протокол HTTP по своей природе не сохраняет состояние (stateless). В том же году спецификация была включена в браузер Netscape Navigator, а затем поддержана другими браузерами, включая Internet Explorer.
В 1997 году компания Netscape направила спецификацию cookie в организацию IETF для стандартизации. Однако процесс затянулся из-за разногласий по вопросам конфиденциальности. В итоге были выпущены два документа RFC: RFC 2109 (1997 год) и RFC 2965 (2000 год), которые так и не получили широкого распространения. Фактическим стандартом стала первоначальная спецификация Netscape, а в 2011 году она была формализована в документе RFC 6265, который действует по настоящее время.
¶Устройство и принцип работы
Когда пользователь впервые заходит на сайт, сервер может включить в HTTP-ответ заголовок Set-Cookie, содержащий пару «имя=значение», а также дополнительные атрибуты. Браузер сохраняет эту информацию и при последующих запросах к данному домену автоматически добавляет заголовок Cookie с сохранёнными данными.
Основные атрибуты cookie:
- Domain — определяет домен, для которого действует cookie. Если атрибут не указан, cookie действует только для точного домена без поддоменов.
- Path — указывает путь на сервере, для которого cookie действителен. По умолчанию — корневой каталог.
- Expires / Max-Age — задают срок жизни cookie. Если срок не указан, cookie считается сессионным и удаляется при закрытии браузера.
- Secure — cookie передаётся только по защищённому протоколу HTTPS.
- HttpOnly — запрещает доступ к cookie через JavaScript, что снижает риск кражи данных при XSS-атаках.
- SameSite — ограничивает отправку cookie в межсайтовых запросах (защита от CSRF-атак).
Максимальный размер одного cookie ограничен примерно 4 КБ, а количество cookie для одного домена — обычно не более 50 штук.
¶Классификация
По сроку хранения cookie делятся на два типа:
- Сессионные cookie — существуют только в течение текущей сессии браузера и удаляются после его закрытия.
- Постоянные cookie — сохраняются на жёстком диске пользователя в течение заданного срока, даже после закрытия браузера.
По происхождению и назначению выделяют:
- Собственные (first-party) cookie — устанавливаются непосредственно посещаемым сайтом.
- Сторонние (third-party) cookie — устанавливаются сторонними доменами (например, рекламными сетями, счётчиками аналитики) при загрузке контента с их серверов.
- Зомби-cookie — особый вид, который восстанавливается после удаления с помощью других технологий хранения (Flash, Silverlight, ETag).
¶Применение
Cookie широко используются в веб-разработке для решения следующих задач:
- Управление сессиями — поддержание состояния авторизации пользователя. После входа в аккаунт сервер выдаёт cookie с идентификатором сессии, который позволяет пользователю не вводить пароль при каждом переходе по страницам.
- Персонализация — сохранение пользовательских настроек (язык интерфейса, тема оформления, размер шрифта).
- Торговые операции — хранение содержимого корзины в интернет-магазинах.
- Отслеживание и аналитика — сбор данных о поведении посетителей: количество визитов, время на сайте, переходы по страницам. Наиболее известным инструментом такого рода является Google Analytics.
- Таргетированная реклама — сторонние cookie позволяют рекламным сетям показывать пользователю объявления на основе его предыдущих посещений различных сайтов.
¶Конфиденциальность и законодательство
Использование cookie вызывает обеспокоенность в связи с возможностью отслеживания действий пользователя в интернете без его ведома. Особенно это касается сторонних cookie, которые позволяют рекламным компаниям составлять подробный профиль поведения конкретного человека.
Для защиты приватности пользователей в ряде стран приняты законодательные акты, регулирующие использование cookie. В Европейском союзе действует Директива о конфиденциальности в электронных коммуникациях (2002/58/EC), известная как «Директива о cookie». Она требует, чтобы сайты получали информированное согласие пользователя перед установкой cookie, за исключением технически необходимых. Это привело к появлению на европейских сайтах всплывающих баннеров с запросом согласия на обработку данных.
В России вопросы использования cookie регулируются Федеральным законом «О персональных данных» (152-ФЗ). Согласно требованиям Роскомнадзора, сайты обязаны уведомлять пользователей о сборе cookie и получать их согласие, если такие данные могут быть отнесены к персональным.
¶Браузерные настройки и блокировка
Все современные браузеры предоставляют пользователям возможность управлять cookie: полностью запретить их приём, удалять по завершении сессии, блокировать сторонние cookie или настраивать исключения для отдельных сайтов. Также существуют расширения для браузеров, позволяющие более гибко контролировать cookie и автоматически удалять их.
С 2019 года браузер Safari от Apple по умолчанию блокирует все сторонние cookie. В 2020 году компания Google объявила о планах поэтапного отказа от поддержки сторонних cookie в браузере Chrome, однако сроки этого процесса неоднократно переносились. В качестве альтернативы предлагаются новые механизмы, такие как FLoC и Topics API, которые должны обеспечить таргетированную рекламу без передачи данных о поведении пользователя третьим лицам.
¶Риски безопасности
Cookie могут использоваться злоумышленниками для несанкционированного доступа к аккаунтам пользователей. Основные виды атак:
- Перехват cookie — злоумышленник получает доступ к cookie через незащищённое соединение или вредоносное программное обеспечение. Для защиты используется атрибут Secure и протокол HTTPS.
- XSS-атаки — внедрение вредоносного JavaScript-кода на страницу сайта позволяет похитить cookie через JavaScript. Атрибут HttpOnly предотвращает такой способ кражи.
- CSRF-атаки — подделка межсайтовых запросов, при которой злоумышленник заставляет браузер жертвы отправить запрос на сайт с её cookie. Атрибут SameSite снижает риск таких атак.
- Подделка cookie — изменение содержимого cookie на стороне клиента. Для защиты сервер должен хранить критичные данные на своей стороне, а в cookie помещать только случайный идентификатор сессии.
¶Альтернативные технологии
Поскольку cookie имеют ограничения по размеру и вызывают проблемы с конфиденциальностью, существуют альтернативные механизмы хранения данных на стороне клиента:
- Web Storage (localStorage и sessionStorage) — технология HTML5, позволяющая хранить большие объёмы данных (до 5–10 МБ) в браузере. В отличие от cookie, данные не передаются автоматически на сервер с каждым запросом.
- IndexedDB — встроенная в браузер база данных для хранения структурированных данных.
- ETag — механизм HTTP-кэширования, который также может использоваться для отслеживания пользователей.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →

