Cookies - булочки для браузера

Михаил Соловьев

И неправы доки-врачи,
Что, мол, разносчики заразы - бичи,
Сдадим, если надо, мы им анализ мочи -
Захлебнутся в нем больничные хрычи!
Чайф

Cookie (читается "кУки") переводится как "булочка". Этими булочками скрипты кормят наши браузеры, но браузеры их не едят, а хранят в особой папке, чтобы потом рассказать серверу, чем эта булочка начинена.

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

Это можно делать несколькими способами. Например, если сервер бродит по сайту, порождаемому для него одним и тем же скриптом, этот скрипт запросто может генерировать для него ссылки, содержащие в себе нужную информацию. Как это делать - неважно, или через поле hidden в формах, или добавляя к каждой ссылке query string с параметрами.

Cookies - еще один способ реализации этой идеи. В отличие от скрипта, хранящего данные в памяти сервера, использование cookies подразумевает хранение информации на жестком диске клиента. Таким образом, опознаванием клиента занимается браузер, по запросу скрипта отдающий информацию о пользователе. Следует отметить, что такая реализация отнюдь не является опасной: скрипт может получить только то, что он туда записал, так что ему отнюдь не будет выдана вся информация о вас, за исключением той, которую вы отдали ему, заполнив соответствующую форму и той, которую он может получить через дыры в безопасности javascript (отнюдь не cookies!).

Cookies представляют собой обычный текстовый файл, с содержанием которого вы запросто можете ознакомиться, если найдете, где именно ваш браузер их хранит. Я лично не помню :). Формат cookie очень прост - это обычная текстовая строка вида

имя переменной=значение

Имя файла cookie содержит домен, которому браузер может этот cookie отдавать. То есть если на сайте налоговой полиции вам посадили куку со всеми вашими данными, вплоть до цвета трусов, то (если вам ее посадили правильно) скрипты на нашем сервере прочитать ее не смогут. Следует отметить, что, кроме всего прочего, есть и ограничение на количество хранимых браузером cookies - не более 20 на каждый сервер и не более 300 всего, так что врядли вы пострадаете от слишком большого их количества :).

 

Cookie характеризуется некоторыми параметрами, определяющими его область действия. А именно:

  1. Срок действия cookie - срок годности булочки. По истечении этого срока булка считается тухлой и браузер ее больше никому не отдает. Стандартное значение - до закрытия браузера (в случае MS Internet Explorer Это значит, что надо закрыть все окна браузера).
  2. Информация о пути на сервере - области сервера, где может лежать скрипт, которому можно показать булку. Например /cgi-bin/. Если путь таков, то скрипт, лежащий в корне сервера, получие cookie не сможет. Стандартным значением считается корневая папка сервера ("/").
  3. Информация о домене - домены, скриптам на которых можно показать булку. Например www.nalog.ru. Или .nalog.ru (точка в начале домена означает, что можно отдавать информацию всем поддоменам этого домена). Стандартное значение - домен установившего cookie сервера.
  4. Уровень защиты - установка этого параметра включенным потребует, чтобы cookie отдавалось серверу только по защищенным каналам (https), чтобы не быть перехваченным третьей стороной. По умолчанию отключен.


Опубликовал admin
18 Ноя, Вторник 2003г.



Программирование для чайников.