Что такое cookies?

🎯 Зачем спрашивают
  • Проверить базовые знания веба и протоколов HTTP, без которых фронтенд-разработчику трудно ориентироваться в безопасности и работе с сетью.
  • Убедиться, что кандидат понимает: cookies — это не просто «место хранения», а механизм передачи данных между клиентом и сервером.
  • Проверить знание флагов безопасности (HttpOnly, Secure, SameSite) и понимание, как они помогают против XSS/CSRF.
  • Оценить умение кандидата отличать cookies от других способов хранения данных в браузере (localStorage, sessionStorage).
  • Сигнал: кандидат умеет думать не только о «где хранить токен», но и о безопасности и производительности.
 
📝 Ответ
Cookies — это механизм хранения данных на клиенте, которые автоматически отправляются на сервер при каждом запросе к соответствующему домену для поддержания сессий.
Реализован как key-value хранилище.
 
Чаще всего в них хранят:
  • авторизационные токены
  • метки аб-тестов
  • метки для рекламных и маркетинговых компаний.
 
Каждой cookie можно задать следующие настройки:
  • Domain — домен, на который назначается кука
  • Expires/Max-Age — срок жизни
  • HttpOnly — Можно ли получить доступ к куке через JS код
  • Secure — отправлять ли куку только при открытом HTTPS соединении
  • Path — ограничивает доступ к cookie только для определённого пути.
  • SameSite — предотвращает CSRF, задаёт правила отправки cookie при кросс-доменных запросах (Strict, Lax, None).
Cookies может устанавливать как клиент, так и сервер (через HTTP заголовок Set-Cookies).
 
⚖️ Компромиссы
✅ Плюсы
❌ Минусы
Автоматически отправляются серверу
Ограничение по размеру (~4 KB)
Поддерживаются всеми браузерами
Отправляются на каждый запрос → увеличивают вес трафика
Могут устанавливаться сервером
Подвержены атакам, если не грамотно не настроить
 
🔎 Встречные вопросы
  • В чем разница между localStorage и cookies?
  • Что такое SameSite и зачем он нужен?
  • Чем HttpOnly отличается от обычных cookie?
  • Когда выбрать cookie vs localStorage vs sessionStorage?
 
🚩 Красные флаги
  • Cookies — это то же самое, что localStorage (нет понимания автоматической передачи на сервер и различий в механике).
  • Cookies — это только для авторизации (игнорируют A/B тесты, трекинг, user prefs).
  • Cookies — это база данных в браузере (переоценка возможностей; забывают про ограничение ~4KB).
  • Не упоминает флаги безопасности (HttpOnly, Secure, SameSite) — значит, не понимает рисков XSS/CSRF.
  • Cookies можно хранить сколько угодно данных (не знает про лимиты и ограничения браузеров).
  • Считает, что «cookies всегда устанавливает только сервер» (забывает про document.cookie на клиенте).
  • Cookies безопаснее localStorage без контекста (не упоминает именно HttpOnly как ключевую защиту).
 
🛠 Практика
 
📚 Источники / ссылки