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

Куки (файлы cookie) — технология хранения данных в браузере

Куки (англ. cookies, от англ. «печенюшки») — это небольшие фрагменты данных, которые веб-сайт сохраняет на устройстве пользователя через браузер при посещении страницы. При каждом последующем обращении к тому же сайту браузер автоматически отправляет сохранённые данные обратно серверу, что позволяет сайту «узнавать» пользователя и сохранять состояние между посещениями. Технология была предложена в 1994 году программистом Лу Монтилло из Netscape и с тех пор стала стандартным механизмом веб-разработки, применяемым практически всеми сайтами.

Происхождение и история

Технология cookie появилась в 1994 году, когда Лу Монтилло, сотрудник компании Netscape Communications, разработал механизм для решения конкретной задачи: интернет-магазин Netscape Shopping Cart должен был помнить содержимое корзины покупателя при переходе между страницами. HTTP — основной протокол передачи данных в интернете — является протоколом без состояния (stateless): каждый запрос обрабатывается сервером независимо от предыдущих, поэтому сервер изначально не имеет способа отличить одного пользователя от другого при переходах между страницами.

Идея заключалась в том, чтобы сервер при отправке ответа включал в него небольшой фрагмент данных, который браузер сохранял локально, а затем автоматически передавал обратно при каждом обращении к тому же сайту. Название «cookie» (печенье) было предложено как отсылка к «fortune cookies» — печенью с предсказанием, которое содержит скрытое сообщение.

Первая реализация была встроена в браузер Netscape Navigator версии 1.0, выпущенный в 1994 году. В 1995 году стандарт cookie был формализован в документе RFC 2109, а в 2000 году обновлён в RFC 2965. В 2011 году вышел стандарт RFC 6265, который описывает современный механизм работы файлов cookie.

Устройство и принцип работы

Работа cookie основана на механизме HTTP-заголовков. Когда пользователь запрашивает страницу сайта, сервер может добавить к ответу заголовок Set-Cookie, содержащий имя и значение фрагмента данных, а также дополнительные параметры. Браузер сохраняет эти данные и при следующем запросе к тому же сайту автоматически добавляет к нему заголовок Cookie с сохранёнными парами «имя-значение».

Пример структуры cookie:

ПараметрНазначение
Имя и значениеСобственно данные (строка символов)
DomainДомен, для которого действует cookie
PathПуть на сайте, к которому относится
Expires / Max-AgeСрок действия (дата или время в секундах)
SecureПередавать только по HTTPS
HttpOnlyЗапретить доступ из JavaScript (защита от XSS)
SameSiteОграничение передачи при переходах с других сайтов

Объём одного cookie ограничен примерно 4 КБ, а общее количество cookie на один домен — около 50 штук. Эти ограничения установлены браузерами.

По сроку хранения различают:

  • Сессионные cookie — хранятся только во время работы браузера и удаляются после его закрытия. Используются, например, для поддержания состояния авторизации.
  • Постоянные (постоянного хранения) — содержат дату истечения срока действия и сохраняются на диске устройства после закрытия браузера. Могут действовать от нескольких дней до нескольких лет.

По назначению:

  • Технические (строго необходимые) — обеспечивают базовую работу сайта: авторизацию, сохранение содержимого корзины, балансировку нагрузки. Без них сайт не может функционировать.
  • Аналитические — собирают статистику о посещениях: какие страницы просматриваются, сколько времени пользователь проводит на сайте. Примеры — счётчики Яндекс.Метрики и Google Analytics.
  • Рекламные (поведенческие) — используются для показа персонализированной рекламы и отслеживания интересов пользователя на разных сайтах.
  • Функциональные — сохраняют пользовательские настройки: язык интерфейса, регион, тему оформления.

Применение

Основные сценарии использования cookie включают:

  • Аутентификация — после ввода логина и пароля сервер создаёт cookie с идентификатором сессии, который подтверждает, что пользователь авторизован.
  • Персонализация — запоминание настроек интерфейса, языка, валюты, региона доставки.
  • Интернет-магазины — сохранение содержимого корзины между посещениями.
  • Аналитика — сбор обезличенной статистики о поведении посетителей для улучшения сайтов.
  • Реклама — отслеживание интересов пользователя для показа релевантных объявлений.

Использование cookie регулируется законодательством многих стран. В России порядок работы с файлами cookie определён Федеральным законом от 27.07.2006 № 152-ФЗ «О персональных данных» и Федеральным законом от 13.03.2006 № 38-ФЗ «О рекламе»: пользователь должен быть уведомлен об использовании cookie, а аналитические и рекламные файлы — только с его согласия. В Евросоюзе действует Общий регламент по защите данных (GDPR), а также ePrivacy Directive, требующие информирования пользователей и получения согласия на нестрого необходимые cookie.

Безопасность и ограничения

Cookie могут быть уязвимы к нескольким типам атак. Кража cookie (session hijacking) позволяет злоумышленнику перехватить идентификатор сессии и получить доступ к аккаунту пользователя. Для защиты от этого используется флаг HttpOnly, запрещающий доступ к cookie из JavaScript, и флаг Secure, ограничивающий передачу по незащищённому HTTP.

Атака cross-site request forgery (CSRF) использует автоматическую отправку cookie браузером при запросах к сайту. Механизм защиты — флаг SameSite, ограничивающий отправку cookie при переходах с других сайтов.

Пользователь может управлять cookie через настройки браузера: просматривать сохранённые файлы, удалять их, блокировать сторонние cookie или запрещать их полностью. Полная блокировка cookie, как правило, ломает функциональность большинства сайтов, поэтому рекомендуется ограничивать блокировку сторонними (third-party) cookie, которые устанавливаются не посещаемым сайтом, а встроенными в него сторонними сервисами — рекламными сетями, виджетами соцсетей.

Источники:

  • RFC 6265 — HTTP State Management Mechanism
  • RFC 2109 — HTTP State Management Mechanism
  • Федеральный закон от 27.07.2006 № 152-ФЗ «О персональных данных»
  • Федеральный закон от 13.03.2006 № 38-ФЗ «О рекламе»
  • Документация W3C по механизмам управления состоянием HTTP
  • Крупиков А. Веб-разработка: технологии и стандарты
Заметили ошибку или не согласны с информацией в статье? Напишите нам support@bfometr.ru