Усі статті

Cookies: як невеликий шматок тексту зберігає стан сесії

Cookie — це невеликий фрагмент тексту, який сервер просить браузер зберегти й надсилати назад із кожним наступним запитом до того самого сайту. Саме на цьому механізмі досі тримається більшість систем автентифікації в вебі.

Як cookie передаються

Сервер встановлює cookie за допомогою заголовка відповіді Set-Cookie. Після цього браузер автоматично додає заголовок Cookie з відповідним значенням до кожного наступного запиту на той самий домен — доти, доки cookie не закінчиться термін дії або її не видалять.

Атрибут Secure

Атрибут Secure дозволяє браузеру надсилати cookie лише через захищене HTTPS-з'єднання. Без цього атрибута cookie може бути передана відкритим текстом по HTTP, що робить її вразливою до перехоплення в незахищених мережах.

Атрибут HttpOnly

Cookie з атрибутом HttpOnly недоступна для читання через JavaScript у браузері (document.cookie). Це критично важливий захист від XSS-атак: навіть якщо зловмиснику вдасться впровадити шкідливий скрипт на сторінку, він не зможе вкрасти сесійну cookie з таким атрибутом.

Атрибут SameSite

Атрибут SameSite обмежує, чи надсилається cookie при переходах з інших сайтів, і є основним захистом від CSRF-атак. Значення Strict блокує міжсайтове надсилання повністю, Lax дозволяє в обмежених випадках (наприклад, при переході за посиланням), а None знімає обмеження (і вимагає атрибута Secure).

Навіщо це потрібно

  • Налаштувати безпечну сесійну cookie для власного вебзастосунку.
  • Діагностувати, чому cookie не зберігається чи не надсилається браузером у певних сценаріях.
  • Перевірити конфігурацію cookie стороннього сайту на предмет базових практик безпеки.

Атрибут Partitioned і майбутнє без сторонніх cookie

Атрибут Partitioned (частина ініціативи CHIPS) дозволяє сайту, вбудованому в iframe на чужій сторінці, мати окрему версію cookie для кожного батьківського сайту замість однієї спільної. Це компроміс між повним блокуванням сторонніх cookie (що ламає легітимні вбудовані віджети на кшталт чатів чи платіжних форм) і старою моделлю, де сторонні cookie могли відстежувати користувача між усіма сайтами, де він з'являється.

Спробувати інструмент