Как работают куки. Что такое cookies и как с ними работать. Защита персональных данных

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

Куки-файлы: что это?

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

  1. Пользователь отправляет запрос на хост-компьютер;
  2. В ответ на это действие хост возвращает на клиентский ПК крошечные файлы, которые содержат информацию о текущей сессии;
  3. При повторном обращении к ресурсу процедура общения с сайтом будет выглядеть проще, поскольку север будет «узнавать» пользователя по сохранившемуся на его машине идентификатору.

Подобная технология является «визитной карточкой» веб-обозревателей (браузеров), хотя многие другие расширения имеют ее на своем вооружении.

Использование cookies значительно облегчает серфинг во Всемирной Паутине, но создает дополнительную угрозу личным данным пользователя.

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

Что такое куки в браузере?

Данные элементы в памяти компьютера хранят такую информацию о человеке:

  • Имена пользователя и пароли, которые вводятся в формы веб-сайтов;
  • Индивидуальные настройки;
  • Отслеживание поведения клиента;
  • Статистические данные;
  • Информацию о конкретной сессии.

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

Куки можно условно разделить на постоянные непостоянные:

  1. Постоянные сохраняются на жестком диске машины до определенного указанного времени. По истечении оного происходит их автоматическое удаление.
  2. Непостоянные - именуются также сессионными - стираются с накопителя сразу после закрытия окна программы.

Подавляющее большинство современных браузеров имеют ограничение на общий размер складируемых в ПК куки-файлов.

Преимущества cookies

Куки применяются в различных компьютерных программах во уже на протяжении двух десятков лет. За такой длительный срок они успели себя зарекомендовать в качестве эффективного инструмента для решения таких задач:

  1. Сохранение индивидуальных настроек на достаточно долгое время. Пользователь избавлен от необходимости раз за разом вводить логин и пароль. В результате освобождается время для более продуктивного серфинга по сети;
  2. Интернет-ресурсы используют следящие файлы для изучения поведения клиента. Каждый сайт индивидуализируется и приспосабливается под потребности конкретной личности. Это удобно как компаниям, повышающим конверсию, так и обычным юзерам, которые могут теперь найти информацию гораздо быстрее;
  3. Реклама становится более таргетированной: при показе объявления учитываются история запросов, пол, индивидуальное поведение клиента. Так отсеивается ненужный рекламный мусор, показываются только те товары, которые будут действительно интересны;
  4. Работа с некоторыми сайтами в принципе невозможна без cookies. Среди них практически все интернет-магазины.

Недостатки cookies

Эта технология, значительно облегчающая жизнь обычного пользователя сети, не лишена ряда недостатков. Среди самых значимых претензий, предъявляемых браузерному «печенью »:

  • Просчеты в области безопасности. Информацию, которую сервер пересылает на машину клиента для временного хранения, относительно легко перехватить. В большинстве случаев пользователи не используют для доступа ко Всемирной Паутине зашифрованные соединения, поэтому они становятся легкой добычей мошенников. В случае попадания данных из cookie в руки злоумышленников, последние могут узнать многое о посещениях сайтов и особенностях поведения человека в сети;
  • Смысл их существования сводится практически на нет, если параллельно используются несколько обозревателей. Каждый из них хранит свои временные файлы, которые никак между собой не пересекаются;
  • Значительная часть пользователей убеждена, что куки являются программными файлами, которые могут самовольно удалять информацию с накопителя ПК. Некоторые утверждают, что они предназначены исключительно для рекламы или спама. Все эти опасения являются не более чем заблуждениями .

Меры предосторожности при веб-серфинге

«Дыры» в программном обеспечении позволяют получить доскональную информацию о человеке. Причем получателем таких данных могут выступать как злоумышленники и недобросовестные коммерсанты, так и заботливые государственные органы.

Во избежание слежки и кражи конфиденциальной информации, можно настроить обозреватель так, чтобы:

  • Куки никогда не записывались;
  • Следящие файлы подлежали автоматическому удалению после закрытия интернет-обозревателя;
  • Запретить отправку данных с компьютера на сервера некоторых подозрительных сайтов;
  • Установить короткий временной промежуток для хранения следящей информации.

Периодически нужно производить принудительную чистку браузера. Однако чтобы удалить содержимое папок, нужно знать, где они находятся. В помощь начинающим пользователям были разработаны специальные программы (например, CCleaner), которые производят анализ и удаление cookie по нажатию одной кнопки.

Что такое куки и кэш?

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

  1. Изображения;
  2. Звуковые файлы;
  3. Видеоролики;
  4. Копии html-страниц.

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

Однако подгрузка не из веба, а с ПК может привести к тому, что «картинка» на экране будет неактуальной. Кроме того, папка с кешем занимает немало места, поскольку все ее содержимое представляет собой медиафайлы.

Итак, в данной статье мы рассказали, что такое куки. Благодаря им можно только один раз заполнить форму пароля на сайте и не вспоминать его при каждом входе. Именно благодаря им юзер видит только те рекламные объявления, которые нужны именно ему. Но за такую простоту приходится платить своей безопасностью и сохранностью персональных данных.

Видео: как освободить место и удалить куки?

В данном ролике мастер Антон Прохоров расскажет, как можно почистить кэш и куки в браузере Google Chrome:

Мы используем файлы «cookies» и похожие технологии на нашем сайте, чтобы отличить Вас от других пользователей нашего ресурса, улучшить работу и повысить эффективность сайта.

Что такое файлы cookie?

Cookies – это небольшие файлы, состоящие из букв и цифр, которые сохраняются Вашим браузером на Вашем устройстве (компьютер, телефон, планшет и т.п.), если Вы соглашаетесь на их использование.


Используя этот сайт, вы подтверждаете свое согласие на использование файлов cookie в соответствии с условиями, описанными на данной странице.

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

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

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

Использование нами файлов cookie

Мы используем следующие cookie-файлы:

    Крайне необходимые cookie-файлы . Это файлы, необходимые для корректной работы нашего Сайта.

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

    Функциональные cookie-файлы . Данные файлы нужны для того, чтобы распознать Вас, когда Вы снова заходите на веб-сайт. Это позволяет нам персонализировать содержание Сайта под Ваши нужды, запоминать Ваши предпочтения.

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

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

Вы можете заблокировать cookie-файлы, активировав определённую настройку в Вашем браузере, что позволит Вам отказаться от установки всех или части cookie-файлов. Однако в случае блокировки cookie-файлов в интернет браузере (включая крайне необходимые cookie-файлы), Вы можете потерять доступ ко всем или нескольким разделам нашего Сайта.

Как долго файлы cookie хранятся на моем устройстве?

Некоторые файлы cookie действуют с момента вашего входа на Сайт до конца данной конкретной сессии работы в браузере. При закрытии браузера эти файлы становятся ненужными и автоматически удаляются. Такие файлы cookie называются «сеансовыми».

Некоторые файлы cookie сохраняются на устройстве и в промежутке между сессиями работы в браузере - они не удаляются после закрытия браузера. Такие файлы cookie называются «постоянными». Срок хранения постоянных файлов cookie на устройстве различается для разных файлов cookie.

Как контролировать или удалять файлы cookies

Большинство интернет-браузеров изначально настроены автоматически принимать cookie. Вы можете изменить настройки таким образом, чтобы блокировать cookie или предупреждать пользователя, когда файлы данного типа будут отправлены на устройство. Есть несколько способов управления cookie. Пожалуйста, обратитесь к инструкции браузера для того, чтобы узнать больше о том, как скорректировать или изменить настройки браузера. Если отключить cookie, которые мы используем, то это может повлиять на вашу работу с нашим Сайтом. Если вы используете различные устройства для просмотра и доступа к нашему Сайту (например, компьютер, смартфон, планшет и т.д.), вы должны убедиться, что каждый браузер на каждом устройстве настроен в соответствии с вашей точкой зрения на работу с файлами cookie.

Другие подобные технологии

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

Наши серверы автоматически считывают ваш IP-адрес, когда вы посещаете наш Сайт, и мы можем связать эту информацию с вашим доменным именем или с именем вашего интернет-провайдера. Мы также можем собрать некоторые «сведения о посещениях», относящиеся к вашему использованию нашего Сайта. Сведения о посещениях включает в себя, например, информацию о вашем компьютере или устройстве, веб-браузере или операционной системе и их установках, странице, которая привела вас на наш Сайт, страницы и содержание, которые вы видите и на которые вы кликаете во время вашего визита, а также когда и на протяжении какого времени вы это делаете, что вы загружаете, какие сайты вы посещаете после того, как покидаете наш Сайт, а также ключевые слова, которые вы вводили на нашем Сайте или сайтах, с которых пришли на наш Сайт.

Защита персональных данных

Если в использование файлов cookies и похожих технологий будут внесены изменения, мы разместим информацию в данных правилах. Пожалуйста, проверяйте периодически, как продолжают развиваться методы сбора данных онлайн и наше использование этих данных. Чтобы связаться с нами по вопросам данных правил, Вы можете написать на электронную почту .

Откуда возник термин "cookie" никто достоверно не знает, хотя считается, что во времена зарождения Unix-систем где-то использовалось словосочетание Magic Cookies. Имелись в виду "квитанции" (token, ticket), которыми обменивались программы.

Cookie является решением одной из наследственных проблем HTTP протокола (HyperText Transfer Protocol). Эта проблема заключается в непостоянстве соединения между клиентом и сервером, как при FTP или Telnet сессии, т.е. для каждого документа (или файла) при передаче по HTTP протоколу посылается отдельный запрос. Включение cookie в HTTP протокол дало частичное решение этой проблемы. Иначе говоря, транзакция завершается после того, как браузер сделал запрос, а сервер выдал соответствующий ответ. Сразу после этого сервер "забывает" о пользователе и каждый следующий запрос того же пользователя считает новым пользователем.

Используя cookie, можно эмулировать сессию по HTTP протоколу. Коротко принцип эмуляции сессии таков: на первом запросе выдается соотвествующее значение cookie, а при каждом последующем запросе это значение читается из переменной окружения HTTP_COOKIE и соответствующим образом обрабатывается.

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

Cookie - это небольшая порция текстовой информации, которую сервер передает браузеру. Браузер будет хранить эту информацию и передавать ее серверу с каждым запросом как часть HTTP заголовка. Одни значения cookie могут храниться только в течение одной сессии, они удаляются после закрытия броузера. Другие, установленные на некоторый период времени, записываются в файл. Обычно этот файл называется "cookies.txt" и лежит в рабочей директории установленного на компьютер браузера. У меня, к примеру, в этом файле содержится следующее:

# Netscape HTTP Cookie File
# http://www.netscape.com/newsref/std/cookie_spec.html
# This is a generated file! Do not edit.
www.webclub.ru FALSE /ourweb FALSE 946683907 1 1
.bizlink.ru TRUE / FALSE 915148488 u_irads_watch 627633
.doubleclick.net TRUE / FALSE 1920499140 id 332666ae
.yahoo.com TRUE / FALSE 915144943 Y v=1&n=6jm0u5lgubh1k&l=0b8a0d3h/o&p=m29vvru7130a
.yahoo.com TRUE / FALSE 915144943 T z=3587c277
mail.yahoo.com TRUE / FALSE 943919791 YM.Login
id%3d%241%24rm%24L6MDTCsrCNnk3syLZl2zo.%26sid%3dszxPh4SazGg/
%250a%26ts%3dX%2588%25c3%2506%25d3%25e5I-%255d%253f%2597%25ddu
.preferences.com TRUE / FALSE 1182140165 PreferencesID 3AGN9WD1D80gQfjvjAxRuq
.geocities.com TRUE / FALSE 900743217 iTag gY6bZzWItDQAAWll3T8ASk1vbiwgMTMg
search.netscape.com FALSE / FALSE 942189477 NGUserID cfc84d2a-522-898178454-1
www.webclub.ru FALSE FALSE 913543999 visited yes

Как видно, у меня оставили cookie Российский клуб вебмастеров, поисковая система AltaVista, бесплатный почтовый сервер Yahoo, Netscape Communications, рекламные сети DoubleClick и отечественная InterReklama. В настоящее время большинство браузеров поддерживает механизм cookies. Я точно знаю, что cookie можно использовать во всех версиях Netscape Navigator, Microsoft Internet Explorer и NCSA Mosaic.

Что можно делать с помощью cookie?

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

На использовании cookies также часто строят функции оформления заказов в онлайновых магазинах, в частности, в самом крупном виртуальном книжном магазине Amazon Books реализована своеобразная виртуальная корзина покупателя, как в обычном реальном супермаркете, в которую сервер записывает информацию обо всех заказанных книгах. Пользователь просто помечает интересующие его книги, а затем оформляет покупку сразу всех отмеченных книг.

Еще одна распространенная область использования cookies - при настройке индивидуального профиля каждого зарегистрированного пользователя.

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

Работа с cookie

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

Формат и синтаксис cookie

Предлагаемое мной в этой статье описание формата и синтаксиса cookie является вольным пересказом изначальной спецификации Netscape Communications "Persistent Client State HTTP Cookies". В настоящий момент идет разработка более строгой спецификации для cookie. Итак, cookie является частью HTTP заголовка. Полное описание поля Set-Cookie HTTP заголовка:

Set-Cookie: NAME=VALUE; expires=DATE; path=PATH; domain=DOMAIN_NAME; secure

Минимальное описание поля Set-Cookie HTTP заголовка:

Set-Cookie: NAME=VALUE;

NAME=VALUE - строка символов, исключая перевод строки, запятые и пробелы. NAME-имя cookie, VALUE - значение. Не допускается использование двоеточия, запятой и пробела.

expires=DATE - время хранения cookie, т.е. вместо DATE должна стоять дата в формате "expires=Monday, DD-Mon-YYYY HH:MM:SS GMT", после которой истекает время хранения cookie. Если этот атрибут не указан, то cookie хранится в течение одного сеанса, до закрытия броузера.

domain=DOMAIN_NAME - домен, для которого значение cookie действительно. Например, "domain=cit-forum.com". В этом случае значение cookie будет действительно и для домена cit-forum.com, и для www.cit-forum.com. Но не радуйтесь, указания двух последних периодов доменных имен хватает только для доменов иерархии "COM", "EDU", "NET", "ORG", "GOV", "MIL" и "INT". Для обсуждаемых сейчас новых семи доменов первого уровня ("FIRM", "SHOP", "WEB", "ARTS", "REC", "INFO", "NOM"), вероятно, это условие сохранится. Для доменов иерархии "RU", например, придется указывать три периода.

Если этот атрибут опущен, то по умолчанию используется доменное имя сервера, на котором было задано значение cookie.

path=PATH - этот атрибут устанавливает подмножество документов, для которых действительно значение cookie. Например, указание "path=/win" приведет к тому, что значение cookie будет действительно для множества документов в директории /win/, в директории /wings/ и файлов в текущей директории с именами типа wind.html и windows.shtml. Для того, чтобы cookie отсылались при каждом запросе к серверу, необходимо указать корневой каталог сервера, например, "path=/".

Если этот атрибут не указан, то значение cookie распространяется только на документы в той же директории, что и документ, в котором было установлено значение cookie.

secure - если стоит этот маркер, то информация cookie пересылается только через HTTPS (HTTP с использованием SSL - Secure Socket Level), в защищенном режиме. Если этот маркер не указан, то информация пересылается обычным способом.

Синтаксис HTTP заголовка для поля Cookie

Когда запрашивается документ с HTTP сервера, браузер проверяет свои cookie на предмет соответствия домену сервера и прочей информации. В случае, если найдены удовлетворяющие всем условиям значения cookie, броузер посылает их в серверу в виде пары имя/значение:

Cookie: NAME1=OPAQUE_STRING1; NAME2=OPAQUE_STRING2 ...

Дополнительные сведения

Одновременно можно задавать несколько значений cookie.

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

Использование expires не гарантирует сохранность cookie в течение заданного периода времени, поскольку клиент (браузер) может удалить запись из-за нехватки выделенного места или каких-либо других причин.

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


    всего может храниться до 300 значений cookies

    каждый cookie не может превышать 4Кбайт

    с одного сервера или домена может храниться до 20 значений cookie

Если ограничение 300 или 20 превышается, то удаляется первая по времени запись. При превышении лимита объема в 4Кбайт корректность значения cookie страдает - отрезается кусок записи (с начала этой записи) равный превышению объема.

В случае кэширования документов, например, proxy-сервером, поле Set-cookie HTTP заголовка никогда не кэшируется.

Если proxy-сервер принимает ответ, содержащий поле Set-cookie в заголовке, предполагается, что поле доходит до клиента вне зависимости от кода возврата 304 (Not Modified) или 200 (OK). Соответственно, если клиентский запрос содержит в заголовке Cookie, то он должен дойти до сервера, даже если жестко установлен параметр If-modified-since.

Ниже приведено несколько примеров, иллюстрирующих использование cookies

Пример 1 . Управление подмножеством документов, для которых действительны значения cookie, и их сроком годности

Set-Cookie: CUSTOMER=WILE_E_COYOTE; path=/; expires=Wednesday, 09-Nov-99 23:12:40 GMT
Когда браузер запрашивает URL с путем "/" на этом сервере, он посылает серверу:
Cookie: CUSTOMER=WILE_E_COYOTE
Браузер запрашивает документ и принимает от сервера в ответ:
Когда браузер запрашивает URL с путем "/" на этом сервере, он посылает серверу уже два значения cookie:
Сервер установил еще одно значение cookie, на этот раз с другой областью действия:
Set-Cookie: SHIPPING=FEDEX; path=/foo
Теперь браузер, запрашивая URL с путем "/" на этом сервере, посылает лишь два значения cookie:
Cookie: CUSTOMER=WILE_E_COYOTE; PART_NUMBER=ROCKET_LAUNCHER_0001
и лишь при запросе браузером документов с путем "/foo" на этом сервере посылаются все три значения cookie:
Cookie: CUSTOMER=WILE_E_COYOTE; PART_NUMBER=ROCKET_LAUNCHER_0001; SHIPPING=FEDEX
Комментарий: после закрытия браузера в файле "cookies.txt" останется только одно значение cookie:
CUSTOMER=WILE_E_COYOTE
поскольку только для него установлен срок годности - 9 ноября 1999 года. Все остальные значения не будут сохранены.

Пример 2 . Значения cookie с одинаковыми именами, но разными параметрами
Браузер запрашивает документ и принимает ответ от сервера:

Set-Cookie: PART_NUMBER=ROCKET_LAUNCHER_0001; path=/
Когда браузер запрашивает URL с путем "/" на этом сервере, он посылает значение:
Cookie: PART_NUMBER=ROCKET_LAUNCHER_0001
Во второй раз, запрашивая документ, браузер принимает от сервера значение cookie с другой областью действия:
Set-Cookie: PART_NUMBER=RIDING_ROCKET_0023; path=/ammo
Когда браузер запрашивает URL с путем "/ammo" на этом сервере, он посылает значение:
Cookie: PART_NUMBER=RIDING_ROCKET_0023; PART_NUMBER=ROCKET_LAUNCHER_0001

Комментарий : здесь мы имеем две пары имя/значение с одинаковым именем "PART_NUMBER". При закрытии браузера ни одно из этих значений не сохранится, поскольку не задан параметр expires.

Способы задания значений cookie

Способ задания значений cookie зависит того, как эти значения будут использоваться и какие имеются серверные ресурсы. Можно манипулировать временем жизни выставленных cookie и устанавливать подмножества URL (Universal Resource Locator), в которых заданные значения действительны. Есть несколько способов задания, наиболее часто используются три - через META-таги языка HTML, JavaScript и CGI-скрипты. Любым способом можно задавать как одно, так и несколько значений сразу. Сразу хочу предупредить - не забывайте об ограничениях по объему и количеству значений cookie, а также параметре domain, так как помимо основного доменного имени узла часто бывает несколько алиасов (alias).


    Задание cookie с помощью META-тагов

    Простейший способ выставить cookie - использовать соответствующий META-таг в контейнере...любого статического HTML документа. В общем случае это выглядит следующим образом:

    Такой способ задания cookie, на мой взгляд, наиболее интересен для создателей маленьких домашних страничек, когда нет возможности писать свои собственные CGI-скрипты. А если есть поддержка SSI (Server Side Include) или PHP/Fi, то можно делать интерактивные страницы вообще без использования внешних CGI-скриптов. При наличии SSI на узле создание интерактивности с использованием механизма cookie становится просто удовольствием.

    С помощью cookie задается на любой статичной странице, директивой можно потом считать любые переменные окружения, в том числе и ранее заданные значения cookie (переменная HTTP_COOKIE), а с помощью конструкций, и задавать различные варианты внешнего вида страниц. Так же просто можно проделывать подобные вещи, используя PHP/Fi.

    Если же ни SSI, ни PHP/Fi недоступен, то можно задавать значение cookie, используя JavaScript.

    Задание cookie с помощью JavaScript

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

    Пример 3 . Функция установки значения cookie

    // name - имя cookie
    // value - значение cookie
    // - дата окончания действия cookie (по умолчанию - до конца сессии)
    // - путь, для которого cookie действительно (по умолчанию - документ, в котором значение было установлено)
    // - домен, для которого cookie действительно (по умолчанию - домен, в котором значение было установлено)
    // - логическое значение, показывающее требуется ли защищенная передача значения cookie

    function setCookie(name, value, expires, path, domain, secure) {
    var curCookie = name + "=" + escape(value) +
    ((expires) ? "; expires=" + expires.toGMTString() : "") +

    ((secure) ? "; secure" : "")
    if (!caution || (name + "=" + escape(value)).length <= 4000)
    document.cookie = curCookie
    else
    if (confirm("Cookie превышает 4KB и будет вырезан!"))
    document.cookie = curCookie
    }

    Пример 4 . Функция чтения значения cookie

    Возвращает установленное значение или пустую строку, если cookie не существует.

    // name - имя считываемого cookie

    function getCookie(name) {
    var prefix = name + "="
    var cookieStartIndex = document.cookie.indexOf(prefix)
    if (cookieStartIndex == -1)
    return null
    var cookieEndIndex = document.cookie.indexOf(";", cookieStartIndex + prefix.length)
    if (cookieEndIndex == -1)
    cookieEndIndex = document.cookie.length
    return unescape(document.cookie.substring(cookieStartIndex + prefix.length, cookieEndIndex))
    }

    Пример 5 . Функция удаления значения cookie

    Принцип работы этой функции заключается в том, что cookie устанавливается с заведомо устаревшим параметром expires, в данном случае 1 января 1970 года.

    // name - имя cookie
    // - путь, для которого cookie действительно
    // - домен, для которого cookie действительно
    function deleteCookie(name, path, domain) {
    if (getCookie(name)) {
    document.cookie = name + "=" +
    ((path) ? "; path=" + path: "") +
    ((domain) ? "; domain=" + domain: "") +
    "; expires=Thu, 01-Jan-70 00:00:01 GMT"
    }

    Работающий пример персонализации пользователя, построенный на JavaScript и использующий механизм cookie.

    Задание cookie с помощью CGI-скриптов

    Самый мощный и гибкий способ управления документами с использованием механизма cookie - с помощью CGI-скриптов. Задание значения cookie на Perl будет выглядеть следующим образом:

    Print "Content-type: text/htmln";
    print "Set-Cookie: username=aaa13; expires=Friday, 31-Dec-99 23:59:59 GMT; path=/; domain=www.citforum.ru;nn";
    Скрипт при выдаче результатов работы генерирует HTTP заголовок:
    Content-type: text/html
    Set-Cookie: "username=aaa13; expires=Friday, 31-Dec-99 23:59:59 GMT; path=/; domain=www.citforum.ru;"
    Чтобы прочитать в скрипте ранее заданное значение cookie, используется переменная окружения HTTP_COOKIE.

    $cookie = $ENV{"HTTP_COOKIE"};

    Совсем недавно я написал систему рейтинга серверов для Российского Клуба Вебмастеров, которая использует механизм cookie для защиты от накрутки очков. В ней, задавая и анализируя значения cookie, я либо не допускаю пользователя до голосования (если отключены cookie в браузере или пользователь один раз уже проголосовал), либо разрешаю голосовать (если соответствующее значение не задано). Обмануть такую систему можно, только стирая каждый раз файл cookies.txt. Можно было бы использовать файл логов голосования на узле, но возникали бы проблемы разделения доступа к файлу и замедление работы вследствие использования медленных дисковых операций.

Немного о проблемах, связанных с использованием cookie

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

Другая сторона этой проблемы заключается в том, что на узлах Сети аккумулируются огромные массивы данных с персональной информацией, необходимые для коммерческих серверов. Вот здесь и появляются повышенные требования к защите от несанкционированного доступа к этим данным. Пользователи таких серверов должны быть уверены, что их имена, адреса электронной почты, телефонные номера и проч., не попадут в чужие руки. В противном случае последствия могут оказаться катастрофическими для "проштрафившихся" коммерческих серверов.

Cookie облегчает идентификацию пользователей на основе их информации и предпочтений, и обеспечивает средства персонализации веб-сайтов.

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

Почему используется технология cookie?

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

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

Как работают куки

  1. Перевод веб-страниц между сервером и браузером происходит посредством протокола передачи гипертекста (http). Когда пользователь вводит URL в адресную строку браузера, браузер берет ее и отправляет запрос на сервер, запрашивая веб-страницы, заданные пользователем.
  2. Далее, сервер посылает страницу, запрашиваемую браузером, в виде http-ответа. Ответ передается в виде пакетов из текста, который может содержать заявление с просьбой, чтобы браузер сохранил куки. Это делается посредством заявления, "настройка cookie: имя = значение". Браузер спрашивает, сохранить значение-строка "имя" и вернуть его на сервер при каком-либо дальнейших к нему обращений.
  3. В любой последующий запрос к одному серверу, даже при запросе другой веб-страницы с использованием данного сервера, браузер отправляет серверу значение куки. Сервер идентифицирует эту информацию и выполняет запрос, без необходимости пользователю выполнять процесс аутентификации еще раз.

Преимущества данной технологии

  • С помощью файлов cookie, веб-сайты могут отслеживать количество посещающих его пользователей. Сайт поддерживает пользователя в своей базе данных. Он может реализовать механизм подсчета посещений пользователей и частоту, с которой определенный пользователь посещает сайт, отмечая предпочтения пользователя, и хранить эту информацию в базе данных веб-сайта.
  • Некоторые веб-сайты позволяют свои пользователям изменять макет и содержимое сайта для персонализированного вида. Cookie технологии сделали это возможным.
  • Эта технология также полезна для рекламодателей для отслеживания поведения пользователей. Сохраняя при этом личную информацию посетителя конфиденциальной, cookies помогают рекламодателям понять привычки веб-серфинга посетителей. Рекламодатели могут продвигать определенные продукты для определенных пользователей на основе информации, которую они собирают из cookies.
  • В сайтах электронной коммерции эта технология реализована корзинами. Когда пользователь выбирает элемент, он хранится в базе данных сайта. Это дает возможность делать покупки на сайте. Механизм интернет-магазинов был бы затруднительным без использования технологии cookies.

Недостатки данной технологии

  • Cookies отравление определяется как акт манипуляции содержимым в файле cookie перед отправкой на сервер. Изменения информации, содержащейся в cookies могут вводить в заблуждение веб-сайты и рекламодателей. В случае, если cookie содержит информацию о транзакции, злоумышленник может изменить значение в файле cookie, вызывав потери у пользователя или интернет магазина, участвующих в сделке. Каждый узел имеет независимый набор из cookie-файлов, которыми другой сайт не должен быть в состоянии манипулировать. Технология cookie уязвима для этого в некоторых браузерах.
  • Cookies может генерировать несогласованное состояние между состоянием клиента и состояния хранящихся куков. В тех случаях, когда операция отменяется нажатием на кнопку "назад", или когда страница перезагружается, состояние, хранимого в cookie, должно отражать соответствующие изменения. В технологии cookie отсутствует способность различать между двумя пользователями, которые используют ту же учетную запись пользователя. Cookies не отличают одного пользователя от другого. Они могут отчетливо выявить только сочетание учетной записи пользователя, браузер, и компьютер.
  • Куки технология уязвима для воровства куки. Cookies хищение или перехват информации пользователем-злоумышленником. Когда куки передаются по сети в незашифрованном виде по http-сессиям, существует потенциальная опасность кражи информации.

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

Файлы cookie - это небольшие текстовые файлы, которые создаёт браузер в специальной папке по команде PHP программы. Хотя cookie может создать и JavaScript, но в этой статье не об этом. Тут мы будем говорить только о установке cookie через PHP программу.

Файлы cookie содержать в себе информацию в виде пар имя=значение. Например, в cookie можно записать логин и пароль пользователя и хранить их на компьютере клиента, чтобы он в следующий раз не залогинивался заново. Конечно, хранение логина и пароля в cookie не самый безопасный способ, и эти данные лучше хранить используя сессии в PHP , но в качестве примера использования cookie этот случай подойдёт.

PHP программа даёт команду браузеру-клиенту установить cookie используя строку в заголовке ответа. То есть вы должны представлять, как работает интернет, что такое заголовок запроса и заголовок ответа, чтобы понять как работает установка cookie.

Итак, всю информацию о том, какие cookie должен установить браузер, PHP программа отправляет в заголовке ответа.

Установка cookie в PHP

Для установки cookie в языке PHP есть функция setcookie() , она и задает cookie, которое будет передано браузеру вместе с другими HTTP заголовками.

Все заголовки, которые создаёт ваш скрипт, должны быть отправлены до того, как ваш скрипт что-то выведет в окно браузера.

Вернёмся к нашей функции. Вот её синтаксис:

Bool setcookie (string имя, string значение, int время жизни, string путь, string домен, bool протокол, bool http only)

bool, string, int в этом синтаксисе ‐ это типы данных. То есть "bool setcookie() " обозначает то, что функций setcookie() возвращает значение булевого типа. Далее, первый и второй аргумент (имя и значение) должны быть типа строка (string), и так далее.

Сразу скажу, для начала вам понадобится только первые три параметра. На остальные можете пока не обращать внимания.

  • string имя - имя в паре имя=значение
  • string значение - значение в паре имя=значение
  • int время жизни - время хранения cookie, это метка времени Unix, т.е. желательно задавать это время с помощью функции time() , прибавляя время в секундах, через которое срок действия cookie должен истечь. Также можно воспользоваться функцией mktime() .
  • string путь - путь к директории на сервере, из которой будут доступны cookie.
  • string домен - домен, которому доступны cookie.
  • bool протокол - указывает на то, что значение cookie должно передаваться от клиента по защищенному HTTPS соединению. Если задано TRUE, cookie от клиента будет передано на сервер, только если установлено защищенное соединение. При передаче cookie от сервера клиенту следить за тем, чтобы cookie этого типа передавались по защищенному каналу, должен программист веб-сервера.
  • bool http only - если задано TRUE, cookie будут доступны только через HTTP протокол. То есть cookie в этом случае не будут доступны скриптовым языкам, вроде JavaScript. Эта возможность была предложена в качестве меры, эффективно снижающей количество краж личных данных посредством XSS атак (несмотря на то, что поддерживается не всеми броузерами). Стоит однако же отметить, что вокруг этой возможности часто возникают споры о ее эффективности и целесообразности. Аргумент добавлен в PHP 5.2.0. Может принимать значения TRUE или FALSE.

Только первый параметр обязателен. Если упустить третий параметр, то по умолчанию он будет равным нолю, это значит что cookie исчезнут сразу после закрытия браузера.

Вот пример установки cookie:

Этот пример только устанавливает cookie на компьютер клиента.

Получение cookie в PHP

В прошлом примере мы отправили браузеру команду создать cookie. Теперь он их создал, и когда в следующий раз браузер отправит запрос серверу, то он передаст содержимое cookie в заголовке запроса.

В PHP-програннме можно определить, прислал браузер cookie или нет очень просто. Они доступны в массиве $_COOKIE .

Давайте усложним прошлый пример:

"; print_r($_COOKIE); echo "";

Когда вы откроете страницу примера в первый раз, то за приветствием ничего не будет. Это потомы что cookie положены на ваш компьютер, но серверу ещё не отправлены.

Хотя в массиве $_COOKIE уже может что-то быть, но тогда эти cookie ложит не наш пример.

Только обновив страницу второй раз вы увидите, что PHP программа получила пару $_COOKIE => welcome .

Обратите внимание, что cookie положены на одну минуту, а это значит что через минуту, если обновить страницу, приветствие опять будет отсутствовать.

Пожалуй вот и всё что касается получения доступа к информации из cookie в PHP.

Удаление cookie в PHP

Чтобы удалить cookie нужно просто поставить их срок жизни в прошедшем времени.

Обратите внимание, я поставил прошедшее время с запасом, на случай если на компьютере клиента время установлено не точно.

Пример работы cookie в PHP

Напишем примитивный счётчик просмотра страниц сайта посетителем, используя cookie.

Обратите внимание, что данные в этом примере живут 60 секунд, потом счётчик обнулится.

На этом тема работа с cookie в PHP раскрыта практически полностью.

Понравилось? Лайкни нас на Facebook