PassFront
  1. PassFront
  2. База знаний
  3. Продвинутые темы

Где будешь хранить данные на клиенте?

Продвинутые темы

Выбор клиентского хранилища зависит от задачи: cookie — для того, что нужно серверу; localStorage — для долгих настроек; sessionStorage — на вкладку; IndexedDB — для больших данных; память — для секретов.

Куда что класть

Токены авторизации

  • Refresh token → HttpOnly cookie (недоступен JS, защита от XSS).
  • Access token → в память (переменная/стор), не в localStorage.

Настройки и предпочтения

  • localStorage — тема, язык, флаги (бессрочно, ~5–10 МБ).

Временное состояние сессии/вкладки

  • sessionStorage — шаги формы, временный контекст (живёт на время вкладки).

Данные для сервера

  • Cookie — то, что должно автоматически уходить на сервер (сессии, локаль для SSR).

Большие/структурированные данные, офлайн

  • IndexedDB — кеш больших наборов, файлы, PWA.

Принципы выбора

  • Нужно серверу → cookie.
  • Долгие клиентские данные → localStorage.
  • На одну вкладку → sessionStorage.
  • Много данных/офлайн → IndexedDB.
  • Секреты → память или HttpOnly cookie, не localStorage (XSS).

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

Access token — в памяти, refresh — в HttpOnly cookie; настройки — localStorage; временное на вкладку — sessionStorage; данные для сервера — cookie; большие/офлайн — IndexedDB. Секреты не хранят в localStorage из-за XSS. Выбор — по объёму, сроку, доступу сервера и чувствительности.

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