Кукі (інтернет)
HTTP-cookie або «Ку́кі» (англ. cookie, множина англ. cookies — печиво), або реп'яшки — у комп'ютерній термінології поняття, яке використовується для опису інформації у вигляді текстових або бінарних даних, отриманих від вебсайту на вебсервері, яка зберігається у клієнта, тобто браузера, а потім відправляється на той самий сайт, якщо його буде повторно відвідано.
Таким чином, вебсервер помічає браузер користувача при відвідуванні. Кукі створюються за ініціативою скриптового сценарію на стороні веббраузера. При наступному візиті сервер буде знати, що користувач вже тут був. За допомогою кукі-технології можна вивчити вподобання відвідувача. Кукі є одним із найточніших засобів визначення унікального користувача.
Файл «cookies» (невеликий файл з налаштуваннями профілів) полегшує користування вебсайтом, записуючи дані, необхідні для входу в систему та збору статистики.[1] Користуватися сайтом можна також без файлів «cookies».[1] Кукі зазвичай зберігають ваші вподобання на сайті, такі як ваша мова, місце перебування тощо[2]. Більшість інтернет-користувачів автоматично приймають файли «cookies». Їх можна вимкнути в будь-який момент або налаштувати пошукову систему так, щоб вона повідомляла про всі випадки, пов'язані з відправкою файлів цього типу.[1]
Застосовується для збереження даних, специфічних для даного користувача, і використовуваних вебсервером для різних цілей, серед яких:
- у системах з віддаленим доступом — пароль, що породжується сервером при першому підключенні і посилається користувачеві; при подальших підключеннях користувач не повинен надавати серверу цей пароль
- відстежування стану сесії[en]
Концепція була розроблена компанією Netscape Communications.
Види кукі-файлів
ред.Існують такі види кукі-файлів: «сеансові» і «постійні». Сеансові кукі є тимчасовими і зберігаються тільки до моменту вимкнення браузера. Постійні кукі залишаються на жорсткому диску комп'ютера або на електронному носії до тих пір, поки їх не видалити або не закінчиться термін їх дії[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
Недоторканність приватного життя — Конфіденційність
ред.Під час нормальної експлуатації сервер і браузер користувача постійно обмінюються кукі. Оскільки кукі можуть містити конфіденційну інформацію (ім'я користувача, умови доступу тощо), їх вміст не має бути доступним іншим. Крадіжка кукі — це акт несанкціонованого перехоплення кукі сторонніми.
Після прийняття ЄС закону, відомого як GDPR, у веб-сайтів з‘явився обов‘язок запитувати дозвіл на використання кукі-файлів. На квітень 2024 р. українські сайти такого обов‘язку не мають, але багато з яких вже виконують цю норму[4].
- ↑ а б в Компанія «Київстар». Політика конфіденційності для учасників спільнот Київстар та DJUICE в соціальних мережах Facebook та Вконтакте [Архівовано 15 травня 2013 у Wayback Machine.]
- ↑ Довідка Firefox[недоступне посилання з липня 2019]
- ↑ ПРАВИЛА ВИКОРИСТАННЯ COOKIE-ФАЙЛІВ. Архів оригіналу за 6 березня 2016. Процитовано 16 вересня 2015.
- ↑ Що таке "кукі-файли" та навіщо веб-сайти просять їх дозволяти?. Журнал Locator.ua (укр.). 29 квітня 2024. Процитовано 29 квітня 2024.
.
Див. також
ред.Примітки
ред.Посилання
ред.- RFC 2109 «Механізми контролю стану HTTP-сесії» (англ.)
- RFC 2964 «Використання механізмів керування HTTP-сессії» (англ.)
- RFC 2965 « Механізми контролю стану HTTP-сесії. Нова ревізія. HTTP-Cookies 2» (англ.)
- Що таке кукі, і як з ними працювати? [Архівовано 1 вересня 2011 у Wayback Machine.] (рос.)
- Cookie та PHP [Архівовано 22 жовтня 2007 у Wayback Machine.] (рос.)
- Словник новітніх термінів — варіанти перекладу кук на українську [Архівовано 5 квітня 2019 у Wayback Machine.]