setcookie — отправляет куки


Содержание

Введение в Cookies.

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

Cookie это небольшая порция информации, которую сервер передает клиенту. Клиент (броузер) будет хранить эту информацию и передавать ее серверу с каждым запросом как часть HTTP заголовка. Некоторые cookie хранятся только в течение одной сессии, они удаляются после закрытия броузера. Другие, установленные на некоторый период времени, записываются в файл. Обычно этот файл называется ‘cookie.txt’.

Сами по себе cookies не могут делать ничего, это только лишь некоторая информация. Однако, сервер может на содержащуюся в cookies информацию. Например, в случае авторизованного доступа к чему либо через WWW, в cookies сохраняется login и password в течение сессии, что позволяет не вводить их при запросе каждого запаролированного документа. Другой пример: cookies могут использоваться для построения персонализированных страниц. Чаще всего встречается такое — на некотором сервере Вас просят ввести свое имя, и каждый раз, когда Вы заходите на первую страницу этого сервера, Вам пишут что-то типа «Hello, your_name!». На использовании cookies также часто строят функцию оформления заказа в онлайновых магазинах, в частности, в Амазоне, такая своеобразная виртуальная корзина покупателя, как в обычном реальном супермаркете.

Какие броузеры поддерживают механизм cookies?

Не все, конечно, однако самые популярные поддерживают. Я точно знаю, что Netscape (начиная с самой первой версии), Microsoft IE (трешка и четверка — точно, про предыдущие не знаю), Mosaic

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

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

Другой способ выставить cookie — с помощью серверного скрипта. На Perl это будет выглядеть примерно следующим образом: перед тем как выдавать серверный ответ генерируется HTTP заголовок

Чтобы прочитать скриптом значение cookie, которое было установлено ранее, и соответствующим образом выполнить скрипт, используется переменная окружения HTTP_COOKIE. На Perl это будет выглядеть так:

При использовании SSI для просмотра значения cookie можно применить директиву:

Как с помощью HTML, так и с помощью скриптов можно устанавливать несколько cookie разом:

(PHP 4, PHP 5, PHP 7)

setcookie — Посылает cookie

Описание

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

После передачи клиенту cookie станут доступны через массивы $_COOKIE и $HTTP_COOKIE_VARS при следующей загрузке страницы. Следует иметь в виду, что суперглобальные переменные, такие как $_COOKIE , стали доступны только в PHP 4.1.0. Значения cookie также есть в $_REQUEST .

Список параметров

Все аргументы, за исключением name , являются необязательными. Если нужно пропустить какой-либо аргумент, можно вместо него поставить пустую строку ( «»). Это не относится к аргументу expire . Так как он принимает значение типа integer, для его замены пустая строка не подходит. Используйте вместо нее ноль ( 0).

» RFC 6265 дает конкретные указания, как нужно интерпретировать каждый из параметров setcookie() . name

Значение cookie. Это значение будет сохранено на клиентском компьютере; не записывайте в cookie секретные данные. Значение присвоенное cookie c именем name , допустим, ‘cookiename’, будет доступно через $_COOKIE[‘cookiename’] .

Время, когда срок действия cookie истекает. Это метка времени Unix, то есть это количество секунд с начала эпохи. Другими словами, желательно задавать это время с помощью функции time() , прибавляя время в секундах, через которое срок действия cookie должен истечь. Либо можно воспользоваться функцией mktime() . time()+60*60*24*30 установит срок действия cookie 30 дней. Если задать 0 или пропустить этот аргумент, срок действия cookie истечет с окончанием сессии (при закрытии броузера).

Можно заметить, что expire принимает в качестве значения метку времени Unix, а хранит его в формате Wdy, DD-Mon-YYYY HH:MM:SS GMT. PHP делает внутреннее преобразование автоматически.

Путь к директории на сервере, из которой будут доступны cookie. Если задать ‘/’, cookie будут доступны во всем домене domain . Если задать ‘/foo/’, cookie будут доступны только из директории /foo/ и всех ее поддиректорий (например, /foo/bar/) домена domain . По умолчанию значением является текущая директория, в которой cookie устанавливается.

Домен, которому доступны cookie. Задание домена ‘www.example.com’ сделает cookie доступными в поддомене www и поддоменах более высоких порядков. Cookie доступные низким уровням, таким как ‘example.com’, будут доступны во всех поддоменах высших уровней, с том числе ‘www.example.com’. Старые броузеры, следующие устаревшим нормативам » RFC 2109, могут требовать . перед доменом, чтобы включались все поддомены.

Указывает на то, что значение cookie должно передаваться от клиента по защищенному HTTPS соединению. Если задано TRUE , cookie от клиента будет передано на сервер, только если установлено защищенное соединение. При передаче cookie от сервера клиенту следить за тем, чтобы cookie этого типа передавались по защищенному каналу, должен программист веб-сервера (стоит обратить внимание на $_SERVER[«HTTPS»] ).

Если задано TRUE , cookie будут доступны только через HTTP протокол. То есть cookie в этом случае не будут доступны скриптовым языкам, вроде JavaScript. Эта возможность была предложена в качестве меры, эффективно снижающей количество краж личных данных посредством XSS атак (несмотря на то, что поддерживается не всеми броузерами). Стоит однако же отметить, что вокруг этой возможности часто возникают споры о ее эффективности и целесообразности. Аргумент добавлен в PHP 5.2.0. Может принимать значения TRUE или FALSE .

Возвращаемые значения

Если перед вызовом функции клиенту уже передавался какой-либо вывод (тэги, пустые строки, пробелы, текст и т.п.), setcookie() вызовет отказ и вернет FALSE . Если setcookie() успешно отработает, то вернет TRUE . Это, однако, не означает, что клиентское приложение (броузер) правильно приняло и обработало cookie.

Примеры

Ниже представлено несколько примеров, как отправлять cookie:

Пример #1 Пример использования setcookie()

setcookie ( «TestCookie» , $value );
setcookie ( «TestCookie» , $value , time ()+ 3600 ); /* срок действия 1 час */
setcookie ( «TestCookie» , $value , time ()+ 3600 , «/

rasmus/» , «example.com» , 1 );
?>

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

// Вывести одно конкретное значение cookie
echo $_COOKIE [ «TestCookie» ];
echo $HTTP_COOKIE_VARS [ «TestCookie» ];

// В целях тестирования и отладки может пригодиться вывод всех cookie
print_r ( $_COOKIE );
?>

Пример #2 Пример удаления cookie посредством setcookie()

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


rasmus/» , «example.com» , 1 );
?>

Пример #3 setcookie() и массивы

Имеется возможность помещать в cookie массивы. Для этого каждому cookie нужно дать имя в соответствии с правилами именования массивов. Такая возможность позволяет поместить столько значений, сколько имеется элементов в массиве. При обратном получении все эти значения будут помещены в массив с именем этого cookie:

// отправка cookie
setcookie ( «cookie[three]» , «cookiethree» );
setcookie ( «cookie[two]» , «cookietwo» );
setcookie ( «cookie[one]» , «cookieone» );

// после перезагрузки страницы, выведем cookie
if (isset( $_COOKIE [ ‘cookie’ ])) <
foreach ( $_COOKIE [ ‘cookie’ ] as $name => $value ) <
$name = htmlspecialchars ( $name );
$value = htmlspecialchars ( $value );
echo » $name : $value
\n» ;
>
>
?>

Результат выполнения данного примера:

Список изменений

Версия Описание
5.5.0 Атрибут Max-Age теперь добавляется в заголовок Set-Cookie, отправляемый клиенту.
5.2.0 Добавлен параметр httponly .

Примечания

Чтобы иметь возможность отправлять вывод скрипта до вызова этой функции, можно воспользоваться буферизацией. В этом случае весь вывод скрипта помещается в буфер на сервере и остается там, пока вы явно не отправите его броузеру. Управление буферизацией осуществляется функциями ob_start() и ob_end_flush() в скрипте, либо можно задать директиву output_buffering в файле php.ini или конфигурационных файлах сервера.

Если PHP директива register_globals включена (задано значение on), значения cookie помимо всего прочего будут помещаться в переменные. Для примеров выше будет существовать переменная $TestCookie . Тем не менее, рекомендуется использовать $_COOKIE .

Общие замечания:

  • Cookie станут видимыми только после перезагрузки страницы, для которой они должны быть видны. Для проверки, правильно ли cookie установились, проверьте их при следующей загрузке страницы до истечения срока их действия. Срок действия cookie задается в параметре expire . Удобно проверять существование cookie простым вызовом print_r($_COOKIE);.
  • При удалении cookie должны быть заданы те же параметры, что и при установке. Если в качестве значения задать пустую строку или FALSE , а остальные параметры задать соответственно предыдущему вызову, установившему cookie, тогда cookie c заданным именем будет удалено с клиентской машины. Внутренне это выглядит так: cookie присваивается значение ‘deleted’, а срок действия переносится на год в прошлое.
  • Так как установка значения FALSE приведет к удалению cookie, не следует задавать cookie значения булевого типа. Вместо этого можно использовать 0 для FALSE и 1 для TRUE .
  • Cookie можно именовать, как массивы, и они будут доступны в PHP скрипте, как массивы, но на пользовательской машине они будут храниться в виде отдельных записей. Для задания cookie c множеством имен и значений желательно использовать функцию explode() . Не рекомендуется для этих целей использовать функцию serialize() , так как это негативно сказывается на безопасности скрипта.

При многократных вызовах setcookie() функции выполняются в том порядке, в котором вызывались.

Как включить cookies в разных браузерах? Что такое файлы и как установить поддержку cookies самостоятельно?

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

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

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

Поддержка cookies в браузере Internet Explorer

Многие пользователи для просмотра страниц используют традиционный браузер Internet Explorer. Для этой программы, начиная с 6 версии и выше, файлы cookie можно включить следующим образом:

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

Существует и более простой способ включения cookies в браузере Internet Explorer. Достаточно перетащить ползунок, расположенный в той же вкладке «Конфиденциальность», показывающий уровень безопасности при работе в сети, и выставить его на средний или низкий показатель.

Включение cookies в браузере Mozilla Firefox

Одним из популярных браузеров является Mozilla Firefox. Пользователи, использующие его для работы в сети, должны знать, как включить cookies в нем. Для этого потребуется:

• открыть раздел «Инструменты»;
• зайти в подраздел «Настройки»;
• во вкладке «Приватность» найти строку Firefox;
• в выплывающем меню кликнуть по пункту «Будет запоминать историю»;
• сохранить изменения нажатием кнопки «Ок».

В браузере Mozilla Firefox файлы cookies можно включить и другим способом. Для этого нужно:

• в окне «Настройки» щелкнуть по вкладке «Приватность»;
• в блоке «История» найти параметр Firefox;
• в выплывающем меню из предложенного списка выбрать пункт «Будет использовать ваши настройки хранения истории»;
• поставить галочку в чекбоксе строки «Принимать куки с сайтов»;
• задать значение «Всегда» для параметра «Принимать куки со сторонних сайтов»;
• в пункте «Сохранять куки» выбрать строку «До истечения срока их действия»;
• подтвердить внесенные изменения.

Активация cookies в браузере Opera

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

Для этого необходимо выполнить следующий алгоритм действий:

• зайти в меню «Инструменты»;
• найти раздел «Настройки»;
• переключиться на вкладку «Дополнительно»;
• в боковом меню кликнуть по строке Cookies;
• активировать пункт «Принимать cookies»;
• сохранить внесенные в настройки изменения.

Как включить cookies в Google Chrome?

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

• зайти в главное меню браузера, щелкнув на кнопку, расположенную рядом с адресной строкой;
• открыть раздел «Настройки»;
• во вкладке «Настройки» кликнуть мышкой по строке «Показать дополнительные настройки»;
• найти блок «Личные данные» и нажать на кнопку «Настройка контента»;
• перейти к пункту «Файлы cookie»;
• выбрать параметр «Разрешать сохранение локальных данных»;
• подтвердить изменение, кликнув по кнопке «Готово».

Как активировать cookies в Yandex Browser?

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

• найти значок в виде шестеренки, расположенный в правом верхнем углу, и кликнуть по нему мышкой;
• в открывшемся окне выбрать раздел «Настройки»;
• внизу найти строку «Показать дополнительные настройки» и кликнуть по ней мышкой;
• перейти в блок «Защита личных данных»;
• нажать на кнопку «Настройка содержимого»;
• найти пункт «Файлы cookie»;
• задать необходимые параметры или выбрать действие «Принимать все».

Включение приема файлов cookies в браузерах Safari и Android

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

В Safari (iPhone, iPad) для активации cookies необходимо:

• нажать на иконку в виде шестеренки, расположенную в правом верхнем углу;
• зайти в раздел «Настройки»;
• переключиться на вкладку «Безопасность»;
• в пункте «Принимать Cookies» выбрать вариант «Всегда».

В браузерах Android для включения cookies нужно:

• нажать кнопку «Меню»;
• зайти в раздел «Настройки»;
• во вкладке «Защита и безопасность» выбрать пункт «Включить cookie».

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

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


АйТи бубен

Инструменты пользователя

Инструменты сайта

Содержание

Cookie (куки, печенье) — это небольшой объем именованных данных(в текстовом виде), сохраняемых браузером и связанных с определенной WEB- страницей или WEB- сайтом. Cookies играют роль памяти веб браузера, чтобы сценарии и программы на стороне сервера могли на одной странице работать с данными, введенными на другой странице, или чтобы браузер мог вспомнить пользовательские параметры или другие переменные состояния, когда возвращается на страницу, посещенную им ранее. Cookies первоначально предназначались для разработки серверных сценариев и на низшем уровне реализованы как расширение протокола Методы и структура протокола HTTP. Данные cookie автоматически передаются между веб броузером и веб сервером, так что серверные сценарии могут читать и записывать значения cookie, сохраняемые на стороне клиента.

Cookie описаны в RFC 2965. Cookie файлы рассчитаны на то, чтобы изредка сохранять небольшие объемы данных. Они не являются универсальным средством взаимодействия или механизмом передачи данных, поэтому следует проявлять умеренность при их использовании. Спецификации RFC 2965 рекомендуют производителям браузеров не ограничивать число и размеры сохраняемых cookie файлов. Однако ограничения могут существовать:

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

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

Хотя cookies отправляются только на серверы домена, для которого они предназначены, веб- страница может подгружать изображения или другие компоненты из других доменов. Cookies, получаемые во время загрузки этих компонентов из других доменов, называются «сторонними».

Рекламные компании используют сторонние куки для отслеживания перемещений пользователя по сайтам. В частности, рекламная компания может отслеживать пользователей на всех сайтах, где установлены их рекламные баннеры. Знание страниц, посещённых пользователем, позволяет менять направленность рекламы в зависимости от предпочтений пользователя.

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

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

Рекомендации по созданию cookies- файлов.

Пользователь при помощи JavaScript может изменить cookies- файлы. Более того, существует возможность заменить сессионные куки постоянными. Серверное программное обеспечение должно отслеживать такие попытки. Для этого сервер выдаёт куки на определённый срок и записывает дату окончания куки у себя каждый раз, когда пользователь обращается к серверу. Если куки, присланный браузером, имеет дату действия отличную от той, что хранится на сервере, значит имеет место попытка подмены даты действия куки. Сервер может отреагировать, например, запросив у пользователя повторную авторизацию. Или изначально установить флаг HttpOnly в заголовке Методы и структура протокола HTTP Set-Cookie, который делает cookies недоступными для скриптов со стороны клиента.

На сервере обычно хранят время последней активности пользователя. И время действия куки зависит от типа ресурса, например на форумах от 3 дней, до месяца, на админских панелях 1 день.

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

Cookies могут быть установлены в браузер (или иной другой программе) двумя способами:

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

Cookies являются частью Методы и структура протокола HTTP- заголовка, поэтому setcookie() должна вызываться до любого вывода данных в браузер. Это то же самое ограничение, которое имеет функция header(). Вы можете использовать функции буферизации вывода, чтобы задержать вывод результатов работы скрипта до того момента, когда будет известно, понадобится ли установка cookies или других заголовков.

Любые cookies, отправленные серверу браузером клиента, будут автоматически включены в суперглобальный массив $_COOKIE, если директива variables_order содержит букву «C».

Значение cookie не доступно в массиве $_COOKIE в пределах того самого запроса, в котором cookie установлен. Другими словами, функция setcookie() не изменяет значения массива $_COOKIE. Однако при всех последующих запросах каждый установленный ранее cookie помещается в массив $_COOKIE.

Чтобы вывести на печать имена и значения всех cookies, посланных в текущем запросе, выполните цикл по массиву $_COOKIE:

JavaScript дает возможность устанавливать и читать куки в браузере. В данном уроке мы рассмотрим как происходит работа с куками, а также сделаем простую страницу, которая будет помнить введеное имя и отображать его при каждом входе.

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

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

В JavaScript куки доступны с помощью свойства cookie объекта document. Создать куки можно следующим образом:

. и получить весь сохраненый набор куков так:

Давайте рассмотрим сохранение и получение куков более подробно.

Сохранение куки

Для сохранения куки нужно присвоить document.cookie текстовую строку, которая содержит свойства куки, которые мы хотим создать:

Свойства описаны в таблице:

Свойство Описание Пример
name = значение Устанавливает имя куки и его значение. username=Вася
expires= дата Устанавливает дату истечения срока хранения куки. Дата должна быть представлена в формате, который возвращает метод toGMTString() объекта Date . Если значение expires не задано, куки будет удалено при закрытии браузера. expires=
13/06/2003 00:00:00
path= путь Данная опция устанавливает путь на сайте, в рамках которого действует куки. Получить значение куки могут только документы из указанного пути. Обычно данное свойство оставляют пустым, что означает что только документ установивший куки может получит доступ к нему. path=/demo/
domain= домен Данная опция устанавливает домен, в рамках которого действует куки. Получить значение куки могут только сайты из указанного домена. Обычно данное свойство оставляют пустым, что означает, что только домен установивший куки может получит доступ к нему. domain=ruseller.com
secure Данная опция указывает браузеру, что для пересылки куки на сервер следует использовать SSL. Очень редко используется. secure

Давайте посмотрим пример установки куки:

Данный код устанавливает куки username , и присваивает ему значение «Вася» , которое будет храниться до 15-го февраля 2011 года (используется Европейский формат времени!).

Данный код выполняет точно такое же действие, как и предыдущий пример, но для установки даты используется метод Date.toGMTString() . Учтите, что нумерация месяца в объекте Date начинается с 0, то есть февраль — это 01 .

Данный код устанавливает куки logged_in , и присваивает ему значение «yes» . Так как атрибут expires не установлен, то куки удалится при закрытии браузера.

Данный код устанавливает куки logged_in и присваивает строку хранения значение времени за одну секунду перед текущим — такая операция приведет к немедленному удалению куки. Ручной способ удалить куки!


Перекодирование значения куки!

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

Функция для установки куки

Установка куки станет проще, если мы напишем специальную функцию, которая будет выполнять простые операции, такие как перекодирование значений и построение строки document.cookie . Например:

Функция получает данные для куки в качестве аргументов, затем строит соответствующую строку и устанавливает куки.

Например, установка куки без срока хранения:

Установка куки со сроком хранения до 15 февраля 2011:

Установка куки со сроком хранения, доменом ruseller.com , использованием SSL, но без пути:

Функция для удаления куки.

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

Для использования данной функции нужно только передать ей имя удаляемого куки:

Получение значения куки

Для того, чтобы получить значение предварительно установленного куки для текущего документа, нужно использовать свойство document.cookie :

Таким образом возвращается строка, которая состоит из списка пар имя/значение, разделенных точкой с запятой для всех куки, которые действуют для текущего документа. Например:

В данном примере 2 куки, которые были предварительно установлены: username , который имеет значение «Вася» , и password , который имеет значение «abc123» .

Функция для получения значения куки

Обычно, нам нужно только значение одного куки за один раз. Поэтому строка куки не удобна для использования! Здесь приводится функция, которая обрабатывает строку document.cookies , возвращет только то куки, которое представляет интерес в конкретный момент:

Данная функция использует регулярное выражение для поиска имени куки, которое представляет интерес, а затем возвращает значение, которое обработано функцией unescape() для перекодирования к нормальному символьному виду. (Если куки не найдено, возвращается значение null.)

Данная функция проста в использовании. Например, для возврата значения куки username :

Простой пример использования

В данном примере мы сделали страницу, которая запрашивает Ваше имя при первом посещении, затем она сохраняет Ваше имя в куки и показывает его при следующих посещениях.

Откройте страницу в новом окне. При первом посещении она попросит ввести имя и сохранит его в куки. Если Вы посетите страницу еще раз, она отобразит на экране введенное имя из куки.

Для куки задаем срок хранения в 1 год от текущей даты, это означает, что браузер сохранит Ваше имя даже если Вы закроете его.

Вы можете удалить куки нажав на ссылку Забудь обо мне!, которая вызывает функцию delete_cookie() и обновляет страницу, чтобы снова запросить имя у Вас.

Вы можете посмотреть код страницы в браузере, выбрав функцию просмотра исходного кода. Здесь приводится основная часть кода:

Данный урок показал Вам, как использовать куки в JavaScript для хранения информации о Ваших посетителях. Спасибо за внимание! :)

Данный урок подготовлен для вас командой сайта ruseller.com
Источник урока: www.elated.com
Перевел: Сергей Фастунов
Урок создан: 15 Июня 2010
Просмотров: 203892
Правила перепечатки

5 последних уроков рубрики «Разное»

Как разместить свой сайт на хостинге? Правильно выбранный хороший хостинг — это будущее Ваших сайтов

Проект готов, Все проверено на локальном сервере OpenServer и можно переносить сайт на хостинг. Вот только какую компанию выбрать? Предлагаю рассмотреть хостинг fornex.com. Отличное место для твоего проекта с перспективами бурного роста.

Разработка веб-сайтов с помощью онлайн платформы Wrike

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

20 ресурсов для прототипирования

Подборка из нескольких десятков ресурсов для создания мокапов и прототипов.

Топ 10 бесплатных хостингов

Небольшая подборка провайдеров бесплатного хостинга с подробным описанием.

Быстрая заметка: массовый UPDATE в MySQL

Ни для кого не секрет как в MySQL реализовать массовый INSERT, а вот с UPDATE-ом могут возникнуть сложности. Чтобы не прибегать к манипуляциям события ON_DUPLICATE можно воспользоваться специальной конструкцией CASE … WHEN … THEN.

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

Для идентификации возвращающихся пользователей предусмотрено три этапа:

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

В этой статье рассказывается, как устанавливать файлы cookie, как обращаться к ним и как их удалять.

Файлы cookie обычно устанавливаются в HTTP-заголовке (хотя JavaScript также может устанавливать cookie непосредственно в браузере). PHP-скрипт, который устанавливает cookie, может отправлять заголовки, которые выглядят примерно так:


HTTP/1.1 200 OK
Date: Fri, 04 Feb 2000 21:03:38 GMT
Server: Apache/1.3.9 (UNIX) PHP/4.0b3
Set-Cookie: name=xyz; expires=Friday, 04-Feb-16 22:03:38 GMT;
path=/; domain=example.com
Connection: close
Content-Type: text/html

Как вы можете видеть, заголовок Set-Cookie содержит пару значений имени, дату GMT, путь и домен. Имя и значение будут закодированы в URL. Поле expires — это инструкция для браузера, чтобы «забыть» cookie по истечении заданного времени и даты.

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

GET / HTTP/1.0
Connection: Keep-Alive
User-Agent: Mozilla/4.6 (X11; I; Linux 2.2.6-15apmac ppc)
Host: zink.demon.co.uk:1126
Accept: image/gif, */*
Accept-Encoding: gzip
Accept-Language: en
Accept-Charset: iso-8859-1,*,utf-8
Cookie: name=xyz

Тогда скрипт PHP будет иметь доступ к файлу cookie в переменных окружения $_COOKIE или $HTTP_COOKIE_VARS[], который содержит все имена и значения файлов cookie. Выше cookie можно получить, используя $HTTP_COOKIE_VARS[«name»] .

PHP предоставил функцию setcookie() для установки файла cookie. Эта функция требует до шести аргументов и должна быть вызвана до тега html. Для каждого файла cookie эту функцию нужно вызывать отдельно.

setcookie(name, value, expire, path, domain, security);

Вот деталь всех аргументов —

  • Name — Это задает имя куки и хранится в переменной окружения называется HTTP_COOKIE_VARS. Эта переменная используется при доступе к файлам cookie.
  • Value — Это устанавливает значение указанной переменной и содержание , что вы на самом деле хотите сохранить.
  • Expiry — это определение будущего времени в секундах с 00:00:00 по Гринвичу 1 января 1970 года. По истечении этого времени cookie станет недоступным. Если этот параметр не установлен, cookie автоматически истекает, когда веб-браузер закрыт.
  • Path — Это определяет каталоги , для которых куки. Один символ прямой косой черты позволяет cookie быть действительным для всех каталогов.
  • Domain — Это может использоваться , чтобы указать имя домена в очень больших областях и должны содержать , по крайней мере , два периода , чтобы быть действительным. Все файлы cookie действительны только для хоста и домена, которые их создали.
  • Security — Это может быть установлено в 1, чтобы указать, что файл cookie должен быть отправлен только защищенной передачей с использованием HTTPS, в противном случае это значение равно 0, что означает, что cookie может быть отправлен посредством обычного HTTP.

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

PHP предоставляет множество способов доступа к файлам cookie. Самый простой способ — использовать переменные $_COOKIE или $HTTP_COOKIE_VARS. В следующем примере будут доступны все файлы cookie, указанные в приведенном выше примере.

Вы можете использовать функцию isset(), чтобы проверить, установлен ли файл cookie или нет.

Официально, чтобы удалить cookie, вы должны вызвать setcookie() только с аргументом name, но это не всегда хорошо работает, и на него нельзя положиться. Безопаснее всего установить cookie с истекшей датой —

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

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

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

Как включить файлы куки в Google Chrome?

Шаг 1. Запустите Chrome и нажмите значок меню с тремя точками в верхнем правом углу.

Шаг 2. Нажмите пункт Настройки и прокрутите вниз до кнопки. Нажмите «Дополнительные».

Шаг 3. В разделе «Конфиденциальность и безопасность» нажмите «Настройки контента».

Шаг 4. В появившемся списке нажмите «Файлы Cookie». Затем, если вы готовы, нажмите «Разрешить сайтам сохранять и читать файлы cookie», чтобы включить файлы cookie.

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

Как включить cookies в Mozilla Firefox?

Шаг 1. Нажмите значок трех горизонтальных линий в правом верхнем углу, а затем «Параметры».

Шаг 2. Нажмите «Конфиденциальность и безопасность» с левой стороны.

Шаг 3. Под заголовком «История» щелкните раскрывающийся список рядом с «Firefox» и выберите «Использовать пользовательские настройки для истории».

Шаг 4. Если это еще не сделано, поставьте галочку в поле «Принимать файлы cookie с веб-сайтов».

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

Как включить файлы куки в Microsoft Edge?

Шаг 1. Откройте браузер Edge и щелкните значок с тремя точками в правом верхнем углу.

Шаг 2. Нажмите «Настройки» в нижней части списка.

Шаг 3. Нажмите кнопку «Дополнительные настройки».

Шаг 4. Прокрутите вниз до заголовка «Cookies» и в раскрывающемся меню выберите «Не блокировать файлы cookie».

Как включить файлы Cookies в Safari?

Шаг 1. Запустите Safari и нажмите значок меню «Safari» в верхнем левом углу.

Шаг 2. Нажмите «Настройки» и выберите значок «Конфиденциальность» в верхнем списке меню. Его значок — плоская рука, ладонь обращена к пользователю.

Шаг 3. Рядом с заголовком «Файлы cookie и веб-сайт» убедитесь, что включен параметр «Всегда разрешать».

Если вы хотите включить все, кроме сторонних файлов cookie, выберите «Разрешить с веб-сайтов, которые я посещаю». Если вы хотите запретить хранить файлы cookie отдельно от доступа к веб-сайтам, отметьте «Разрешить только на текущем веб-сайте».

Как включить файлы куки в браузере Opera?

Шаг 1. Щелкните значок простой настройки в правом верхнем углу панели браузера.


Шаг 2. Прокрутите страницу вниз и нажмите «Перейти к настройкам браузера» рядом с значком.

Шаг 3. Нажмите «Конфиденциальность и безопасность» в левом меню.

Шаг 4. прокрутите вниз и под заголовком «Cookies», убедитесь, что в списке выбран параметр «Разрешить локальные данные».

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

Как включить Куки (Cookies) в популярных браузерах

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

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

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

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

Как включить Cookies в браузере Chrome

Откройте настройки хром, для этого щелкните по иконке в виде троеточия в правом углу сверху и в выпавшем меню нажмите по соответствующему пункту.

Прокрутите открывшеюся страницу до самого низа и щелкните по ссылке «Дополнительные». Откроются расширенные опции, зайдите в раздел «Настройки контента».

Самым первым параметром будет «Файлы cookie», перейдите по нему и сделайте активным пункт разрешения сохранения и чтения куки файлов.

На этом все, перезагружать программу необязательно.

Как включить куки в Яндекс Браузер

Кликните по иконке с тремя полосками в верхней части программы и далее откройте «Настройки».

Промотайте открывшуюся страничку до самого низа и щелкните по кнопке, которая позволяет посмотреть дополнительные настройки (смотрите картинку). В блоке «Защита личных данных» щелкните по ссылке в виде кнопки «Настройки содержимого…» и поставьте галочку у параметра с разрешением сохранения локальных данных. Нажмите «Готово».

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

Как включить куки в Опере

Кликните по иконке оперы в верху слева программы и из меню перейдите в настройки или нажмите разом две клавиши «ALT + P».

В открывшемся окне, в левом столбце перейдите по разделу «Безопасность», промотайте страничку до низа и в блоке «Файлы cookie» установите галочку самого первого пункта — «Разрешить локальное сохранение данных».

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

Как включить куки в Mozilla Firefox

В Мозиле щелкните по иконке с тремя линиями в правой верхней части и откройте настройки.

В левом столбце перейдите к разделу «Приватность и защита» и в блоке «Куки и данные сайтов» поставьте галочку у верхнего пункта, что вы принимаете их.

Как видите, все легче легкого, вы активировали их.

Как включить куки в Интернет Эксплорер

Щелкните по значку шестеренку в верхней части программы и откройте «Свойства браузера».

Перейдите на вкладку «Конфиденциальность» и кликните по кнопке «Дополнительно», поставьте галочку и пунктов «Принимать» и «Всегда разрешать…». Нажмите «ОК».

Включить куки в Microsoft Edge

Кликните по значку троеточия в правой верхней части и откройте «Параметры». Далее щелкните по дополнительным параметрам.

Промотайте их до низа и в блоке «Файлы cookie» установите значение «Не блокировать файлы cookie».

Как включить cookies в Safari

Щелкните в меню по «Safari» и войдите в его настройки, после чего перейдите по вкладке «Конфиденциальность».

Уберите галочку с параметра «Блокировать все файлы cookie».

Все, теперь они будут сохраняться.

В заключение

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

Содержание статьи

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

Можно сколько угодно заморачиваться о своей анонимности, использовать прокси
и VPN, подделывать заголовки HTTP-запросов, выдающие используемую систему,
версию браузера, часовой пояс и море другой инфы, но у веб-сайта все равно
останутся способы распознать факт того, что ты на нем уже бывал. Во многих
случаях это не особо критично, но только не в ситуации, когда на каком-то
сервисе необходимо представиться другим пользователем или банально сохранить
анонимность. Легко представить, как среагирует антифрод-система некой условной
финансовой организации, если определит, что с одного компьютера были выполнены
авторизации под аккаунтами совершенно разных людей. Да и разве приятно
осознавать, что кто-то в Сети может отслеживать твои перемещения? Едва ли. Но
обо всем по порядку.

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

Чтобы идентифицировать пользователя, испокон веков использовались кукисы.
Cookies (от англ. «печенье») — это небольшая порция текстовой информации,
которую сервер передает браузеру. Когда пользователь обращается к серверу
(набирает его адрес в строке браузера), сервер может считывать информацию,
содержащуюся в cookies, и на основании ее анализа совершать какие-либо действия.
Например, в случае авторизованного доступа к чему-либо через веб в cookies
сохраняются логин и пароль в течение сессии, что позволяет пользователю не
вводить их снова при запросах каждого документа, защищенного паролем. Таким
образом, веб-сайт может «запомнить» пользователя. Технически это выглядит
следующим образом. Запрашивая страницу, браузер отправляет веб-серверу короткий
текст с HTTP-запросом.

Например, для доступа к странице www.example.org/index.html браузер
отправляет на сервер www.example.org следующий запрос:

GET /index.html HTTP/1.1
Host: www.example.org


Сервер отвечает, отправляя запрашиваемую страницу вместе с текстом,
содержащим HTTP-ответ. Там может содержаться указание браузеру сохранить куки:

HTTP/1.1 200 OK
Content-type: text/html
Set-Cookie: name=value

Если есть строка Set-cookie, браузер запоминает строку name=value (имя =
значение) и отправляет ее обратно серверу с каждым последующим запросом:

GET /spec.html HTTP/1.1
Host: www.example.org
Cookie: name=value
Accept: */*

Все очень просто. Если сервер получил от клиента куки и они есть у него в
базе, он однозначно может их обработать. Таким образом, если это были кукисы с
некоторой информацией об авторизации, у пользователя в момент посещения не будет
спрашиваться логин и пароль. По стандарту куки имеют определенный срок жизни
(хоть он и может быть очень большим), после которого умирают. А любые
сохраненные кукисы пользователь без труда может удалить, воспользовавшись
соответствующей опцией, которая есть в любом браузере. Этот факт сильно
расстраивает владельцев многих ресурсов, которые не желают терять связь с
посетителем. Им важно отслеживать его, понимать, что «вот этот человек был у нас
вчера, а еще позавчера и т.д.». Особенно это касается различных анализаторов
трафика, систем для ведения статистики, баннерных сетей и т.п. Вот тут-то и
начинается самое интересное, потому что разработчики используют всякие
ухищрения, о которых многие пользователи даже не подозревают. В ход идут
различные уловки.

Flash-куки

Все дело в том, что помимо обычных HTTP «плюшек», к которым все давно
привыкли, сейчас активно используются альтернативные хранилища, где браузер
может записать данные на стороне клиента. Первое, что нужно упомянуть — это
хранилище любимого и ненавистного одновременно Flash (для тех пользователей, у
которых он установлен). Данные хранятся в так называемых LSO (Local Shared
Objects) — схожих с cookies по формату файлах, которые сохраняются локально на
компьютере пользователя. Подход во многом аналогичен обычным «плюшкам» (в этом
случае на компьютере пользователя точно так же сохраняется небольшое количество
текстовых данных), но имеет некоторые преимущества:

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

На практике LSO становится очень простой и доступной технологией для трекинга
пользователя. Задумайся: если бы я предлагал тебе удалить все «плюшки» в
системе, ты бы вспомнил о Flash-кукисах? Вероятно, нет. А теперь попробуй взять
любой просмотрщик, например, бесплатный

FlashCookiesView и посмотреть, сколько всего интересного записано в
хранилищах Flash. Тут же вырисовывается и список сайтов, которые очень не хотят
потерять твой след, даже если ты подчистишь кэш браузера (вместе с «плюшками»).

Кукисы везде с evercookie

Но если об LSO слышали продвинутые пользователи и мало-мальски хорошие
разработчики, то о существовании других техник хранения данных, подчас очень
изощренных (но действенных), многие даже не подозревают. Взять хотя бы новые
хранилища, которые появлялись в
HTML5 (Session Storage,
Local Storage, Global Storage, Database Storage via SQLite), о которых ты можешь
прочитать в статье «HTML5:
да придет спаситель». Этой проблемой всерьез заморочился польский специалист
по безопасности Samy Kamkar. В результате на свет появилась специальная
JavaScript-библиотека evercookie, которая специально создана для того, чтобы
создавать максимально живучие кукисы в браузере. Кто-то может спросить: «Зачем
это нужно?». Очень просто: для того, чтобы однозначно идентифицировать
посетителя страницы, если он придет вновь. Такие сложно убиваемые кукисы часто
называются Tracking cookies и даже определяются некоторыми антивирусами как
угроза приватности. Evercookie может свести все попытки остаться анонимным к
нулю.

Секрет в том, что evercookie использует сразу все доступные для браузера
хранилища: обычные HTTP-кукисы, LSO, контейнеры HTML5. Кроме того, в ход идет
несколько хитрых приемов, которые с не меньшим успехом позволяют оставить на
компьютере желанную метку. Среди них: генерация особых PNG-изображений,
использование history браузера, хранение данных с помощью тега ETag, контейнер
userData в Internet Explorer — оказывается, что вариантов-то очень много.

В том, насколько это эффективно работает, можно убедиться на сайте
разработчика —
http://samy.pl/evercookie. Если нажать на кнопку «Click to create an
evercookie», в браузере будут созданы кукисы со случайным числом. Попробуй
удалить кукисы везде, где это только возможно. Бьюсь об заклад, сейчас ты
задумался: «Где еще можно удалить кукисы, кроме как в настройках браузера?».
Уверен, что все удалил? Перезагрузи страницу для верности, можешь даже заново
открыть браузер. Вот теперь смело нажимай на кнопку «Click to rediscover cookies».
WTF? Сайту это не помешало откуда-то взять данные — в полях страницы
отобразилось число, которые было сохранено в кукисах. Но мы же их потерли? Как
это получилось? Попробуем разобраться с некоторыми техниками.

Кукисы в PNG

Крайне интересным приемом, используемым в Evercookie, является подход
хранения данных в кэшированных PNG-изображениях. Когда evercookie устанавливает
куки, он обращается к скрипту evercookie_png.php со специальной HTTP «плюшкой»,
отличной от той, которая используется для хранения стандартной информации о
сессии. Эти специальные кукисы считываются PHP-сценарием, создающим
PNG-изображение, в котором все значения RGB (цветов) выставляются в соответствии
с информацией о сессии. В конечном итоге PNG-файл отправляется браузеру клиента
с пометкой: «файл необходимо кэшировать 20 лет».

Получив эти данные, evercookie удаляет созданные ранее специальные
HTTP-кукисы, затем выполняет тот же самый запрос к тому же PHP-сценарию, но не
предоставляя информации о пользователе. Тот видит, что интересующих его данных
нет, и сгенерировать PNG он не может. Вместо этого браузеру возвращается
поддельный HTTP-ответ «304 Not Modified», что заставляет его вытащить файл из
локального кэша. Изображение из кэша вставляется на страницу с помощью тега
HTML5 Canvas. Как только это происходит, evercookie считывает каждый пиксель
содержимого Canvas, извлекая RGB-значения и, таким образом, восстанавливая
данные изначальных кукисов, которые были сохранены в изображении. Вуаля, все
работает.

Хинт с Web History

Другой прием напрямую использует историю браузера. Как только браузер
устанавливает плюшку, evercookie с помощью алгоритма Base64 кодирует данные,
которые необходимо сохранить. Предположим, что этими данными является строка,
полученная «bcde» после преобразований в Base64. Библиотека последовательно
обращается в фоновом режиме к следующим URL:

google.com/evercookie/cache/b
google.com/evercookie/cache/bc
google.com/evercookie/cache/bcd
google.com/evercookie/cache/bcde
google.com/evercookie/cache/bcde-

Таким образом, эти URL сохраняются в history. Далее в ход идет специальный
прием — CSS History Knocker, который с помощью JS-скрипта и CSS позволяет
проверить, посещал ли пользователь указанный ресурс или нет (подробнее тут —
samy.pl/csshack). Для
проверки плюшек evercookie пробегается по всем возможным символам Base64 на
google.com/evercookie/cache, начиная с символа «a» и двигаясь далее, но только
на один символ. Как только скрипт видит URL-адрес, к которому было обращение, он
начинает перебор следующего символа. Получается своеобразный брутфорс. На деле
этот подбор осуществляется чрезвычайно быстро, потому что никакие запросы к
серверу не выполняются. Поиск в history осуществляется локально в максимально
короткий срок. Библиотека знает, что достигла конца строки, когда URL будет
заканчиваться символом «-«. Декодируем Base64 и получаем наши данные. Как
назвать разработчиков браузеров, которые это позволяют?

Попробуй удали

А что будет, если юзер потрет свои кукисы? Важная фишка самой библиотеки
evercookie в том, что пользователю придется основательно постараться, чтобы
удалить кукисы, оставленные в разных местах — сейчас их 10. Если хотя бы в одном
месте останутся данные куки, то они автоматически восстановятся и во всех других
местах. Например, если пользователь не только удалит свои стандартные кукисы, но
и очистит данные LSO, подчистит HTML5-хранилища, что уже маловероятно, все равно
останутся куки, созданные с помощью кэшированного PNG и web history. При
следующем же посещении сайта с evercookie библиотека не только сможет найти
запрятанную плюшку, но и восстановит их во всех остальных местах, которые
поддерживает браузер клиента. Интересный момент связан с передачей
«плюшек» между браузерами. Если пользователь получает кукисы в одном браузере,
то есть большая вероятность, что они воспроизведутся и в других. Единственное
необходимое для этого условие — сохранение данных в Local Shared Object куке.

Как использовать?

Библиотека Evercookie полностью открытая, поэтому ты можешь свободно
пользоваться ей, подгонять под свои нужды. К серверу не предъявляется никаких
серьезных требований. Все что нужно — это доступ к JS-сценарию, в котором
содержится код evercookie. Чтобы использовать Flash-кукисы (Local Shared Object),
в папке со скриптом должен быть файл evercookie.swf, а для работы техник,
основанных на PNG-кэшировании и использовании хранилища ETag, необходим доступ к
PHP-сценариям evercookie_png.php и evercookie_etag.php. Использовать evercookie
можно на любой страничке сайта, подключив следующий скрипт:

Библиотека evercookie доступна каждому. Это немного пугает, особенно если
совершенно не представляешь, что можно против нее предпринять.

Как защититься?

Проблем с тем, чтобы подчистить куки в браузере и Flash’е, нет. Но попробуй
удали данные везде, где наследила evercookie! Ведь если оставишь куки в одном
месте — скрипт автоматически восстановит значение и во всех остальных
хранилищах. По сути, эта библиотека является хорошей проверкой режима
приватности, который сейчас есть практически у всех браузеров. И вот что я тебе
скажу: из Google Chrome, Opera, Internet Explorer и Safari только последний в
режиме «Private Browsing» полностью блокировал все методы, используемые
evercookie. То есть после закрытия и открытия браузера скрипт не смог
восстановить оставленное им значение. Есть повод задуматься. Тем более что в
ближайшее время разработчик evercookie обещал добавить в библиотеку еще
несколько техник хранения данных, в том числе с помощью технологии Isolated
Storage в Silverlight, а также Java-апплета.

Введение в Cookies.

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

Cookie это небольшая порция информации, которую сервер передает клиенту. Клиент (броузер) будет хранить эту информацию и передавать ее серверу с каждым запросом как часть HTTP заголовка. Некоторые cookie хранятся только в течение одной сессии, они удаляются после закрытия броузера. Другие, установленные на некоторый период времени, записываются в файл. Обычно этот файл называется ‘cookie.txt’.

Сами по себе cookies не могут делать ничего, это только лишь некоторая информация. Однако, сервер может на содержащуюся в cookies информацию. Например, в случае авторизованного доступа к чему либо через WWW, в cookies сохраняется login и password в течение сессии, что позволяет не вводить их при запросе каждого запаролированного документа. Другой пример: cookies могут использоваться для построения персонализированных страниц. Чаще всего встречается такое — на некотором сервере Вас просят ввести свое имя, и каждый раз, когда Вы заходите на первую страницу этого сервера, Вам пишут что-то типа «Hello, your_name!». На использовании cookies также часто строят функцию оформления заказа в онлайновых магазинах, в частности, в Амазоне, такая своеобразная виртуальная корзина покупателя, как в обычном реальном супермаркете.

Какие броузеры поддерживают механизм cookies?

Не все, конечно, однако самые популярные поддерживают. Я точно знаю, что Netscape (начиная с самой первой версии), Microsoft IE (трешка и четверка — точно, про предыдущие не знаю), Mosaic

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

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

Другой способ выставить cookie — с помощью серверного скрипта. На Perl это будет выглядеть примерно следующим образом: перед тем как выдавать серверный ответ генерируется HTTP заголовок

Чтобы прочитать скриптом значение cookie, которое было установлено ранее, и соответствующим образом выполнить скрипт, используется переменная окружения HTTP_COOKIE. На Perl это будет выглядеть так:

При использовании SSI для просмотра значения cookie можно применить директиву:

Как с помощью HTML, так и с помощью скриптов можно устанавливать несколько cookie разом:

Илон Маск рекомендует:  Что такое код ora_commitoff
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL