Куки
HTTP-cookie або «Ку́ки» або «Реп'яшки» (англ. cookie, множина англ. cookies —, печиво) — у комп'ютерній термінології поняття, яке використовується для опису інформації у вигляді текстових або бінарних даних, отриманих від вебсайту на вебсервері, яка зберігається у клієнта, тобто браузера, а потім відправлена на той самий сайт, якщо його буде повторно відвідано.
HTTP |
---|
|
Методи |
Список заголовків |
Коди стану |
Таким чином вебсервер помічає браузер користувача при відвідуванні. Кукі створюються за ініціативою скриптового сценарію на стороні веб-браузера. При наступному візиті сервер буде знати, що користувач вже тут був. За допомогою кукі-технології можна вивчити вподобання відвідувача. Кукі є одним із найточніших засобів визначення унікального користувача.
Файл «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
Недоторканність приватного життя — Конфіденційність
Під час нормальної експлуатації сервер і браузер користувача постійно обмінюються кукі. Оскільки кукі можуть містити конфіденційну інформацію (ім'я користувача, умови доступу, тощо), їх вміст не має бути доступним іншим. Крадіжка кукі — це акт несанкціонованого перехоплення кукі сторонніми.
Див. також
Примітки
- Компанія «Київстар». Політика конфіденційності для учасників спільнот Київстар та DJUICE в соціальних мережах Facebook та Вконтакте Архівовано 15 травня 2013 у Wayback Machine.
- Довідка Firefox[недоступне посилання з липня 2019]
- ПРАВИЛА ВИКОРИСТАННЯ COOKIE-ФАЙЛІВ
Посилання
- RFC 2109 «Механізми контролю стану HTTP-сесії» (англ.)
- RFC 2964 «Використання механізмів керування HTTP-сессії» (англ.)
- RFC 2965 « Механізми контролю стану HTTP-сесії. Нова ревізія. HTTP-Cookies 2» (англ.)
- Що таке кукі, і як з ними працювати? (рос.)
- Cookie та PHP (рос.)
- Словник новітніх термінів — варіанти перекладу кук на українську