Куки

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

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

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

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

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

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

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

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

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

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

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

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

Сервер може встановити кукі у відповідь на запит браузера. Для цього служить заголовок відповіді (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

Примітки

Посилання

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.