Наш чат в Telegram для обмена идеями, проектами, мыслями, людьми в сфере ИТ г.Ростова-на-Дону: @it_rostov

Cookie - Описание технологии

Что такое cookie?

Cookie является решением одной из наследственных проблем HTTP спецификации. Эта проблема заключается в отсутствии постоянного соединения между клиентом и сервером, как при FTP или Telnet сессии, т.е. для каждого документа (или файла) при передаче по HTTP протоколу посылается отдельный запрос. Включение cookie в HTTP протокол дало частичное решение этой проблемы. Cookie - это некое значение в текстово-цифровом виде, которое сервер передает браузеру. Браузер будет хранить эту информацию и передавать ее серверу с каждым запросом как часть HTTP заголовка. Одни значения cookie могут храниться только в течение одной сессии и удаляются после закрытия браузера. Другие, установленные на некоторый период времени, записываются в файл.

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

Клиент имеет следующие ограничения для cookies:

  • всего может храниться до 300 значений cookies
  • каждый cookie не может превышать 4Кбайт
  • с одного сервера или домена может храниться до 20 значений cookies

В случае, если cookie принимает новое значение при имеющемся уже в браузере cookie с совпадающими данными, старое значение затирается новым. В остальных случаях новые cookies добавляются.

Применение cookie

Использование cookie - эффективное решение сохранения пользовательской информации. Многие считают их опасными, якобы они могут заразить компьютер вирусом или украсть их пароль подключения к Интернету. Как ни странно это утверждение является ошибочным.

Но считать cookie безопасными тоже нельзя. Для примера приведу несколько примеров их использования и их "опасности":

  1. Вы пользуетесь почтой с WEB интерфейсом. Чтобы не вводить пароль при каждом входе на ваш почтовый ящик, вы ставите галочку возле надписи "Сохранить пароль". Вследствие чего информация с вашим логином и паролем сохраняется в cookie и при каждом входе на почту пароль и логин установятся автоматически.
  2. Похожий пример можно привести и с Интернет магазинами. Заполнив форму с данными о вашей кредитной карточке они сохраняются и при следующей покупке вам не придется заполнять все заново. Это удобно с точки зрения пользователя, но о безопасности данной технологии не может быть и речи.

Хотя некоторые методы защиты все-таки используются:

  • Информация из Cookie одного домена второго уровня (плюс подуровни) не может быть прочитана другими доменами.
  • Если документ кэшируется, то информация о cookie не кэшируется.
  • Информация Cookie может передаваться с помощью протокола SSL.

Установка cookie

Установка cookie делается посредствам HTTP протокола. Например, клиент получив от сервера строку:

Set-Cookie: name=value; EXPIRES=date; DOMAIN=domain_name; PATH=path; SECURE

"Запомнит", что для сервера domain_name необходимо установить значение переменной name в value. Вот краткое описание значения каждой переменной:
name=VALUE - строка символов, исключая перевод строки, запятые и пробелы. NAME-имя cookie, VALUE - значение.
expires=DATE - время хранения cookie, т.е. вместо DATE должна стоять дата в формате Wdy, DD-Mon-YYYY HH:MM:SS GMT, после которой истекает время хранения cookie. Если этот атрибут не указан, то cookie хранится в течение одного сеанса, до закрытия браузера.
domain=DOMAIN_NAME - домен, для которого значение cookie действительно. Например, domain=domen.com. В этом случае значение cоokie будет действительно и для сервера domen.com, и для www.domen.com. Но не радуйтесь, указания двух последних периодов доменных имен хватает только для доменов иерархии "COM", "EDU", "NET", "ORG", "GOV", "MIL", и "INT". Для доменов иерархии "RU" придется указывать три периода. Если этот атрибут опущен, то по умолчанию используется доменное имя сервера, с которого было выставлено значение cookie.
path=PATH - этот атрибут устанавливает подмножество документов, для которых действительно значение cookie. Например, указание path=/win приведет к тому, что значение cookie будет действительно для множества документов в директории /win/, в директории /wings/ и файлов в текущей директории с именами типа wind.html и windows.shtml Если этот атрибут не указан, то значение cookie распространяется только на документы в той же директории, что и документ, в котором было установлено cookie.
secure - если стоит такой маркер, то информация cookie пересылается только через HTTPS (HTTP с использованием SSL). Если этот маркер не указан, то информация пересылается обычным способом.

Разные языки программирования предлагают свою реализацию установки и изменения cookie.

Читать по теме:


.