Куки

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до: навігація, пошук

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

Примітки[ред.ред. код]

Посилання[ред.ред. код]


Інтернет Це незавершена стаття про Інтернет.
Ви можете допомогти проекту, виправивши або дописавши її.