Куки

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

HTTP-cookie або «Ку́кі» або «Реп'яшки» (англ. Cookie, множина англ. Cookies — тістечка, печиво) — у комп'ютерній термінології поняття, яке використовується для опису інформації у вигляді текстових або бінарних даних, отриманих від веб-сайту на веб-сервері, яка зберігається у клієнта, тобто браузера, а потім відправлена на той самий сайт, якщо його буде повторно відвідано.

Таким чином веб-сервер помічає браузер користувача при відвідуванні. Куки створюються за ініціативою скриптового сценарію на стороні веб-браузера. При наступному візиті сервер буде знати, що користувач вже тут був. За допомогою куки-технології можна вивчити вподобання відвідувача. Куки є одним із найточніших засобів визначення унікального користувача.

Файл «cookies» (невеликий файл з налаштуваннями профілів) полегшує користування веб-сайтом, записуючи дані, необхідні для входу в систему та збору статистики.[1] Користуватися сайтом можна також без файлів «cookies».[1] Куки зазвичай зберігають ваші вподобання на сайті, такі як ваша мова, місце перебування, тощо[2]. Більшість інтернет-користувачів автоматично приймають файли «cookies». Їх можна вимкнути в будь-який момент або налаштувати пошукову систему так, щоб вона повідомляла про всі випадки, пов'язані з відправкою файлів цього типу.[1]

Застосовується для збереження даних, специфічних для даного користувача, і використовуваних веб-сервером для різних цілей, серед яких:

  • у системах з віддаленим доступом — пароль, що породжується сервером при першому підключенні і посилається користувачеві; при подальших підключеннях користувач повинен надавати серверу цей пароль
  • відстежування стану сесії

Концепція була розроблена компанією Netscape.

Види куки-файлів

Існують такі види куки-файлів: «сеансові» і «постійні». Сеансові куки є тимчасовими і зберігаються тільки до моменту вимкнення браузера. Постійні куки залишаються на жорсткому диску комп'ютера або на електронному носії до тих пір, поки їх не видалити, або не закінчиться термін їх дії[3].

Первинні та сторонні куки

Будь-які первинні чи сторонні куки, відносяться до веб-сайту чи домену, що містить куки.

Первинні куки в звичайному розумінні є такими, що встановлюються веб-сайтом під час їх відвідання користувачем веб-сайти що відображаються у вікні URL.

Сторонні куки — це куки, що налаштовані доменами, відмінними від тих, що відвідав користувач. Якщо користувач відвідує веб сайт і окрема компанія налаштовує куки через цей веб-сайт це і буде сторонніми куками.

Механізм Http-cookie

Сервер може встановити куки у відповідь на запит браузера. Для цього служить заголовок відповіді (response header) Set-cookie.

Кукі також може бути встановлений і самим браузером через Javascript, який підтримується більшістю сучасних браузерів.

Браузер повинен зберігати кукі на період визначений для її часу життя і посилати кукі на сервер в заголовку запиту (request header) Cookie.

У запиті посилаються тільки ті кукі, які відповідають домену, шляху і протоколу для яких куки була встановлена.

Вищевикладений механізм застосовний і для будь-якого іншого, відмінного від браузера, клієнтського застосування, що обмінюється інформацією з веб-сервером по протоколу HTTP/HTTPS.

Синтаксис RESPONSE Header (Set-cookie)

set-cookie      =       "Set-cookie:" cookies
cookies         =       1#cookie
cookie          =       NAME "=" VALUE *("; " cookie-av)
NAME            =       attr
VALUE           =       value
cookie-av       =       "Comment" "=" value
                   |       "Expires" "=" value
                   |       "Domain" "=" value
                   |       "Max-age" "=" value
                   |       "Path" "=" value
                   |       "Secure"
                   |       "Version" "=" 1*digit

Неофіційно заголовок відповіді Set-cookie починається з "Set-cookie: "(без лапок). Кожен cookie починається з пари Name=value; за нею можуть іти ще пари Name=value, розділені парою символів «крапка з комою, пропуск» — «;»(без лапок). Синтаксис пари Name=value показаний раніше. Специфікація атрибутів і їхньої семантики йде далі. Пара Name=value повинна йти першою в кожному cookie. Інші пари ім'я-значення можуть іти далі в довільному порядку. Якщо ім'я змінної зустрічається в cookie неодноразово, поведінка не визначена.

name=value

Обов'язково. Ім'ям пакету інформації є NAME, значенням — VALUE. імена, що починаються з символу «$»(без лапок), зарезервовані і не можуть використовуватися в додатках.

VALUE є «непрозорим» користувачеві і може бути чим завгодно, що сервер хоче послати, можливо у визначеному сервером придатним для друку ASCII — кодуванню. «Непрозорість» означає, що зміст цікавий і доцільний лише серверу що послав cookie. Зміст може, фактично, бути легким для читання будь-кому, хто досліджує cookie.

comment=comment

Опційно. Оскільки cookie може містити приватну інформацію про користувача, атрибут Comment дозволяє серверу документувати намічене використання cookie. Користувач може проглянути інформацію, щоб вирішити, чи почати(продовжити) сесію з цим cookie.

expires=date Опційно. Атрибут Expires указує час зберігання cookie. Замість date повинна стояти дата у форматі «expires=sun, Dd-mon-yyyy Hh: mm: ss GMT», після якої закінчується час зберігання cookie. Якщо цей атрибут не вказаний, то cookie зберігається протягом одного сеансу, до закриття браузера.

domain=domain

Опційно. Атрибут Domain визначає домен, для якого cookie є дійсним. Явно вказаний домен повинен завжди починатися з крапки.

max-age=delta-seconds

Опційно. Атрибут Max-age визначає час життя cookie в секундах. Значення delta-seconds — десяткове не — негативне ціле число. Після закінчення delta-seconds клієнт повинен відмовитися від куки. Значення нуля означає, що від cookie потрібно відмовитися негайно.

path=path

Опційно. Атрибут Path визначає підмножина URL, до яких застосовується cookie.

secure

Опційно. Маркер Secure (значення не привласнюється) наказує використовувати тільки (невказаний) безпечний метод з'єднання з сервером кожного разу, коли необхідно послати назад цей cookie.

Програма (можливо під контролем користувача) може визначити, який рівень безпеки відповідає для «secure» cookie. Атрибут Secure потрібно розуміти як радий з безпеки від сервера, вказуючи, що в інтересі сесії захистити зміст cookie.

version=version

Обов'язково. Атрибут Version, десяткове ціле, ідентифікує, якій версії специфікації відповідає cookie. Для даної специфікації застосовується Version=1.



Приклад заголовка відповіді Set-cookie: Set-cookie: sessionid=678893467800; path=/; domain=.mydomain.com
Set-cookie: lang=ru

Синтаксис REQUEST Header (Cookie)

  cookie          =       "Cookie:" cookie-version
                          1*((";" | ",") cookie-value)
  cookie-value    =       NAME "=" VALUE [";" path] [";" domain]
  cookie-version  =       "$version" "=" value
  NAME            =       attr
  VALUE           =       value
  path            =       "$path" "=" value
  domain          =       "$domain" "=" value


Приклад заголовка запиту Cookie: Cookie: sessionid=678893467800; lang=it

Недоторканність приватного життя — Конфіденційність

Під час нормальної експлуатації сервер і браузер користувача постійно обмінюються куки. Оскільки куки можуть містити конфіденційну інформацію (ім'я користувача, умови доступу, тощо), їх вміст не має бути доступним іншим. Крадіжка куки — це акт несанкціонованого перехоплення куки сторонніми.

Див. також

DHTML

Примітки

Посилання