Вопрос проверяет понимание угроз безопасности во frontend и причин выбора httpOnly cookies для хранения чувствительных данных.
Refresh token часто хранят в httpOnly cookies, потому что такие cookies недоступны из JavaScript. Это защищает токен от XSS-атак. Браузер автоматически отправляет cookie с запросами к серверу. Такой подход снижает риск кражи токена через вредоносный скрипт. Это считается best practice для SPA.
Refresh token является самым чувствительным элементом JWT-авторизации, поэтому его хранение требует максимальной защиты.
httpOnly cookies — это cookies, к которым JavaScript не имеет доступа.
Ключевые свойства:
Нельзя прочитать через document.cookie
Недоступны для JS-кода
Отправляются браузером автоматически
Если refresh token хранится:
в localStorage
в sessionStorage
то при XSS-атаке злоумышленник может:
прочитать токен
сохранить его
использовать для бесконечного обновления access token
Защита от XSS
Автоматическая отправка на backend
Минимизация логики на frontend
Часто используются вместе с:
Secure — cookie передаётся только по HTTPS
SameSite — защита от CSRF
Frontend:
не читает refresh token напрямую
просто отправляет запрос на refresh
получает новый access token
Вывод:
Хранение refresh token в httpOnly cookies — это компромисс между удобством и максимальной защитой от XSS-атак.