PassFront
  1. PassFront
  2. База знаний
  3. DOM и браузер

Разбери, можно ли хранить токен в Cookies: при каких условиях и какие ограничения.

DOM и браузер

Хранить токен в cookie можно и часто рекомендуется, но безопасно только с флагами `HttpOnly`, `Secure` и `SameSite`; иначе есть риски XSS и CSRF.

Почему cookie — хороший вариант

  • С флагом HttpOnly cookie недоступна из JavaScript → токен не украсть через XSS (в отличие от localStorage).
  • Отправляется на сервер автоматически — удобно для сессий.
Set-Cookie: token=abc; HttpOnly; Secure; SameSite=Lax

Обязательные условия безопасности

  • HttpOnly — защита от кражи через XSS.
  • Secure — только по HTTPS.
  • SameSite (Lax/Strict) — защита от CSRF (не слать cookie при кросс-сайт запросах).

Ограничения и риски

  • Без HttpOnly cookie читается из JS → та же уязвимость к XSS, что и localStorage.
  • Cookie автоматически шлётся с запросами → без SameSite уязвима к CSRF (нужны токены/SameSite).
  • Ограничение ~4 КБ.
  • При кросс-доменной архитектуре нужен SameSite=None; Secure + настройка CORS credentials.

Практика

  • Refresh token → HttpOnly cookie (безопасно, недоступен JS).
  • Access token → часто держат в памяти (нужен в JS для заголовка Authorization).

Коротко для собеседования

Да, хранить токен в cookie можно и предпочтительно с HttpOnly (защита от XSS), Secure (HTTPS), SameSite (защита от CSRF). Без этих флагов cookie так же уязвима, как localStorage. Refresh token — в HttpOnly cookie, access — обычно в памяти.

Другие вопросы раздела