Вопрос проверяет знание best practices хранения токенов и понимание угроз безопасности во frontend.
Access token обычно хранится в памяти приложения или в JavaScript-переменной. Refresh token рекомендуется хранить в httpOnly cookies. Такое разделение снижает риск XSS-атак. Frontend не должен хранить оба токена в localStorage. Безопасность хранения напрямую влияет на устойчивость приложения.
Хранение токенов — один из самых критичных аспектов frontend-безопасности.
Рекомендуемые варианты:
В памяти приложения (state, closure)
В runtime-переменной
Почему так:
Минимальный риск утечки
Токен очищается при перезагрузке страницы
Подходит для короткоживущих токенов
Нежелательные варианты:
localStorage
sessionStorage
Причина — уязвимость к XSS-атакам.
Наиболее безопасный вариант:
httpOnly cookies
Преимущества:
Недоступен из JavaScript
Защищён от XSS
Автоматически отправляется браузером
Дополнительные флаги:
Secure
SameSite
Если злоумышленник получит:
access token → временный доступ
refresh token → постоянный доступ
Разделение хранения снижает последствия атак.
Вывод:
Access token лучше хранить в памяти, refresh token — в httpOnly cookies. Это считается наиболее безопасной и практичной схемой для SPA.