Давайте поговорим о файлах cookie HTTP

Файлы cookie были изобретены компанией Netscape в середине 90-х годов как способ хранения некоторой пользовательской информации в браузере, а не для того, чтобы хранить ее на веб-сервере.

HTTP — это протокол без сохранения состояния , что означает, что он ничего не запоминает между различными обменами запросами и ответами. Сервер обрабатывает каждый запрос как отдельное соединение. Веб-сервер не запоминает, вошли ли вы уже в систему, установили предпочтительный язык и т. д.

Варианты использования файлов cookie изменились за последние два десятилетия, и в настоящее время они обычно используются для:

  • Управление сеансом
  • Персонализация
  • Отслеживание активности для показа рекламы

Что в куки?

Файл cookie — это просто текстовые данные, которые сохраняются браузером и содержат следующую информацию:

  • Пара имя-значение, содержащая фактические данные (например, id = 1034820810).
  • дата истечения срока действия, определяющая срок действия файла cookie (в формате UTC/GMT). Если срок действия не установлен, то файл cookie удаляется, как только пользователь закрывает свой браузер.
  • доменипуть к серверу, которому он принадлежит. Это используется для ограничения того, с каким сайтом можно поделиться файлом cookie.
  • (Необязательно) Безопасный указывает браузеру отправлять файл cookie только по протоколу HTTPS.
  • (Необязательно) HttpOnly запрещает доступ к файлу cookie через любой клиентский код. Это используется для предотвращения кражи вредоносными скриптами файлов cookie с конфиденциальными данными, такими как сеансы.

Вот скриншот из инструментов разработчика Chrome для файлов cookie, установленных nytimes.com:

Как создается файл cookie?

Чтобы создать файл cookie, сервер добавляет в свой HTTP-ответ заголовок Set-Cookie:

HTTP/1.1 200 OK  
Content-Type: text/html; charset=utf-8 
Date: Thu, 13 Oct 2016 16:03:41 GMT 
Set-Cookie: RMID=007f010109ee57ff1a960007; path=/; domain=.nytimes.com; expires=Fri, 13 Oct 2017 05:24:38 UTC

После того как браузер сохранил файл cookie, он отправляется как часть каждого последующего запроса на тот же сервер, что и содержимое заголовка Cookie в HTTP-запросе:

GET / HTTP/1.1 
Host: www.nytimes.com 
Cookie: RMID=007f010109ee57ff1a960007; 
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36

Обратите внимание, что клиент отправляет только пару «имя-значение» и ни один из атрибутов. Это связано с тем, что атрибуты являются инструкциями сервера для браузера о том, как и когда отправлять cookie обратно.

Где хранятся файлы cookie в браузерах?

Расположение зависит от браузера. Большинство современных браузеров используют файл базы данных SQLite для хранения файлов cookie на диске.

Ограничения по размеру

Для широкой поддержки рекомендуется не превышать 50 файлов cookie на домен и 4093 байта на домен.

документ.cookie

Вы можете использовать JavaScript для создания, чтения и удаления файлов cookie с помощью свойства document.cookie.

document.cookie = "username=amir.boroumand; expires=Sat, 31 Dec 2016 12:00:00 UTC; path=/; HttpOnly; Secure"

Помните, что вы не сможете получить файл cookie с установленным флагом HttpOnly.

Анализ файла cookie может быть некрасивым в JavaScript, поскольку свойство возвращает строку, содержащую все файлы cookie для этого сайта. Вы должны разделить строку, зная, что файлы cookie разделены точкой с запятой.

Сеансовые файлы cookie

Файл cookie сеанса не имеет даты истечения срока действия. Эти файлы cookie хранятся в памяти и не записываются на диск. Когда браузер закрывается, файл cookie удаляется.

Ниже приведены некоторые распространенные имена идентификаторов сеансов от популярных серверов веб-приложений:

  • PHPSESSID (PHP)
  • JSESSIONID (J2EE)
  • ASP.NET_SessionId (ASP.NET)

Постоянные файлы cookie

Срок действия постоянного файла cookie истекает после фиксированной даты. Они не очищаются, когда пользователь закрывает свой браузер.

Файлы cookie первой стороны

Основной файл cookie ограничен тем же доменом, что и веб-сайт, который вы просматриваете. Например, если вы посещаете nytimes.com, основной файл cookie будет доступен для чтения только страницам внутри nytimes.com.

Сторонние файлы cookie

Файлы cookie могут быть установлены только доменом, из которого браузер извлекает контент. Однако большинство коммерческих веб-сайтов содержат контент с других веб-сайтов в виде рекламы.

Когда вы посещаете nytimes.com, браузер также получает контент из рекламной сети, такой как Google DoubleClick. Это позволяет DoubleClick устанавливать собственный файл cookie в браузере, чтобы регистрировать, какие объявления он вам показывал.

Сторонние файлы cookie чаще всего используются для отслеживания пользователей рекламными сетями, поисковыми системами и сайтами социальных сетей.

Закон ЕС о файлах cookie

Компании, ведущие деятельность в ЕС, должны соблюдать закон о конфиденциальности, который требует раскрытия информации об использовании файлов cookie. Если вы перейдете на google.co.uk, вы увидите уведомление о конфиденциальности внизу страницы. Подробнее с законом можно ознакомиться здесь.

Первоначально опубликовано на www.codebyamir.com 13 октября 2016 г.