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

Где лучше хранить данные для авторизации?

DOM и браузер

Данные для авторизации лучше хранить безопасно: access token — в памяти, refresh token — в `HttpOnly` cookie. localStorage избегают из-за уязвимости к XSS.

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

Access token

  • В памяти приложения (переменная/стор) — нужен в JS для заголовка, безопаснее localStorage.
  • Восстанавливается через refresh при старте.

Refresh token

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

Почему не localStorage

localStorage доступен любому JS, включая XSS-скрипт → украдут токен:

localStorage.getItem('token'); // уязвимо к XSS

Сравнение мест хранения

  • Память — Безопасность: высокая; Переживает перезагрузку: нет
  • HttpOnly cookie — Безопасность: высокая (защита от XSS); Переживает перезагрузку: да
  • localStorage — Безопасность: низкая (XSS); Переживает перезагрузку: да
  • обычная cookie — Безопасность: средняя (XSS + CSRF); Переживает перезагрузку: да

Дополнительно

  • Короткий access + ротация refresh + отзыв на сервере.
  • HTTPS обязателен.
  • Проверка прав — на сервере (клиент только UX).

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

Данные авторизации: access token — в памяти (восстанавливается через refresh), refresh token — в HttpOnly cookie (Secure, SameSite — защита от XSS/CSRF). localStorage избегают — любой JS (включая XSS) прочитает. Это самое безопасное сочетание.

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