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

Примітки

Посилання


Інформація

Стаття Куки в українській Вікіпедії посіла такі місця в місцевому рейтингу популярності:

Представлений вміст статті Вікіпедії було вилучено в 2021-06-14 на основі https://uk.wikipedia.org/?curid=12703