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

Где хранил JWT Token?

DOM и браузер

JWT-токен хранят безопасно: access token — в памяти, refresh token — в `HttpOnly` cookie. localStorage используют осторожно из-за XSS.

Рекомендуемое хранение JWT

Access token (короткий)

  • В памяти приложения — нужен в JS для заголовка Authorization, недоступен после перезагрузки, но безопаснее.
config.headers.Authorization = `Bearer ${accessToken}`;

Refresh token (длинный)

  • `HttpOnly` cookie (Secure, SameSite) — недоступен из JS, защита от кражи через XSS.

Почему важно место хранения

JWT читаем (Base64), а если украден — злоумышленник действует от имени пользователя до истечения. Поэтому:

  • Не в localStorage (XSS украдёт).
  • Access — короткий срок жизни.
  • Refresh — в HttpOnly cookie + ротация.

Компромиссы

  • Память — Риск: минимальный; Переживает reload: нет
  • HttpOnly cookie — Риск: защита от XSS; Переживает reload: да
  • localStorage — Риск: XSS; Переживает reload: да

Практика в SPA

  • Access в Zustand/переменной, refresh — в HttpOnly cookie.
  • При старте — тихий refresh для восстановления сессии.

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

JWT: access token — в памяти (для заголовка, восстанавливается через refresh при старте), refresh token — в HttpOnly cookie (защита от XSS). localStorage избегают — украдут при XSS, а JWT читаем и действует до истечения. Короткий access + ротация refresh + HTTPS.

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