Открыть сервис

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 →