Cookie, сеанси і чому сайти вас пам'ятають

HTTP не має пам'яті: кожен запит до сервера — ніби перший. Сервер не знає, що п'ять секунд тому ви ввели пароль, поклали товар у кошик або обрали мову.

Ілюстрація до статті: Cookie, сеанси і чому сайти вас пам'ятають

Оновлено:

HTTP не має пам’яті: кожен запит до сервера — ніби перший. Сервер не знає, що п’ять секунд тому ви ввели пароль, поклали товар у кошик або обрали мову. Cookie — механізм, який дає протоколу пам’ять: маленький запис, який сервер просить браузер зберегти й повертати з кожним наступним запитом. На ньому тримаються входи в облікові записи, кошики й налаштування — і на ньому ж побудовано відстеження між сайтами, через яке cookie мають погану репутацію. Ця стаття пояснює, як працюють cookie й сеанси, чим вони корисні й чим небезпечні, і що насправді змінює кнопка «Прийняти всі».

Як cookie перетворюється на сесію входу

Сервер додає до відповіді заголовок:

Set-Cookie: session=7f3a9c1e; Path=/; HttpOnly; Secure; SameSite=Lax; Max-Age=86400

Браузер зберігає пару session=7f3a9c1e, прив’язану до домену, і до кожного наступного запиту на цей домен додає заголовок Cookie: session=7f3a9c1e. Значення cookie — зазвичай не самі дані, а ідентифікатор сеансу: випадковий ключ, за яким сервер знаходить у своїй базі запис «це користувач Марія, увійшла о 9:12, кошик такий». Саме тому вхід «пам’ятається»: браузер щоразу пред’являє ключ від сеансу. Хто володіє ключем — той і «Марія» для сервера, що робить крадіжку cookie рівнозначною крадіжці пароля на час життя сеансу.

Атрибути cookie визначають її поведінку:

  • Max-Age / Expires — термін життя. Без них cookie сеансова й зникає при закритті браузера.
  • Secure — надсилати лише через HTTPS.
  • HttpOnly — недоступна для JavaScript на сторінці; захищає від крадіжки через впроваджений скрипт.
  • SameSite — чи надсилати cookie, коли запит ініційовано з іншого сайту. Strict/Lax захищають від атак CSRF; None потрібне для вбудованих сторонніх віджетів.
  • Domain, Path — на які адреси поширюється.

Власні й сторонні cookie

Власні (first-party) cookie встановлює сайт, який ви відкрили. Вони тримають ваш вхід і налаштування; без них веб непридатний до використання. Сторонні (third-party) cookie встановлює інший домен, ресурси якого вбудовані в сторінку: рекламна мережа, кнопка соцмережі, лічильник аналітики. Оскільки та сама рекламна мережа присутня на тисячах сайтів, її cookie дозволяє впізнати вас на кожному з них і скласти профіль інтересів. Це і є «відстеження між сайтами». Safari й Firefox блокують сторонні cookie за замовчуванням; Chrome обмежує їх поступово. У відповідь індустрія переходить до інших методів — відбитків браузера, серверного відстеження, ідентифікаторів за входом, — тож зникнення сторонніх cookie не означає зникнення відстеження.

Що робить банер згоди

Європейські правила (GDPR, ePrivacy) вимагають згоди на cookie, які не є строго необхідними. Звідси банери. «Необхідні» cookie (вхід, кошик, безпека) не потребують згоди й працюють завжди. «Прийняти всі» дозволяє аналітичні, рекламні й персоналізаційні cookie; «Відхилити» або «Лише необхідні» — ні. Сайт зобов’язаний зробити відмову не складнішою за згоду, хоча багато хто ховає її за другим екраном. Для приватності найкращий вибір — «лише необхідні»; сайт при цьому працює повністю.

Безпека сеансів

Оскільки cookie сеансу дорівнює входу, головні загрози — її крадіжка й підробка. Захист із боку сайту: випадкові довгі ідентифікатори, HttpOnly і Secure, обмежений термін життя, новий ідентифікатор після входу, прив’язка до ознак пристрою, можливість «вийти на всіх пристроях». З боку користувача: не входити в акаунти на чужих комп’ютерах або виходити явно; не встановлювати розширення з доступом до всіх сайтів; тримати систему й браузер оновленими, бо шкідливі програми крадуть файли cookie з диска — це один із найпоширеніших способів обійти двофакторну автентифікацію.

Як керувати cookie і не втратити входи

  • На банерах обирайте «лише необхідні»; сайт працюватиме, а відстеження буде менше.
  • Увімкніть блокування сторонніх cookie в браузері — це прибирає більшість міжсайтового відстеження без шкоди для входів.
  • На спільних комп’ютерах виходьте з акаунтів явно або користуйтесь приватним вікном.
  • Періодично переглядайте активні сеанси в налаштуваннях важливих сервісів і завершуйте незнайомі.
  • Розробникам: HttpOnly; Secure; SameSite=Lax за замовчуванням, короткий термін життя, ротація ідентифікатора після входу.
  • Не зберігайте в cookie самі дані (ім’я, роль, права) — лише ідентифікатор, дані тримайте на сервері або підписуйте.

Часті запитання

Чи можуть cookie містити вірус?

Ні. Cookie — пасивний текст, він не виконується. Ризик cookie — у приватності та крадіжці сеансу, не в зараженні.

Чому мене «вибило» з акаунта?

Cookie сеансу закінчилась, була видалена (очищення даних браузера) або сервер завершив сеанс — через зміну пароля, тривалу неактивність або підозрілу активність.

Чи допоможе очищення cookie від відстеження?

Тимчасово: рекламні мережі втратять зв’язок із попереднім профілем, але почнуть новий. Блокування сторонніх cookie й трекерів дає стійкіший ефект.

Cookie — це записка, яку сайт просить браузер повертати щоразу; вона робить веб зручним рівно настільки, наскільки й стежить за вами.

Коротко: cookie дають протоколу HTTP пам’ять: браузер зберігає ідентифікатор сеансу й повертає його серверу з кожним запитом, що і підтримує вхід. Власні cookie необхідні, сторонні використовуються для відстеження між сайтами, і банер згоди стосується саме другої категорії. Захищайте сеанси, як паролі, блокуйте сторонні cookie й обирайте «лише необхідні».