JWT в браузере: httpOnly-куки vs localStorage и модель обновления токена
Почему XSS бьёт по localStorage сильнее, зачем короткий access и refresh на сервере и какие заголовки SameSite нужны.
Токен в `localStorage` доступен любому JS на странице — при XSS злоумышленник читает его напрямую; `httpOnly` cookie недоступна из JS и снижает ущерб при инъекции.
Комбинируйте короткий access JWT с refresh по защищённому каналу и ротацией refresh в БД для отзыва сессий.
- JSON Web Token — OWASP Cheat Sheet Series — Рекомендации по хранению и валидации (применимо шире Java).
- Set-Cookie — MDN (SameSite) — Атрибуты Secure, HttpOnly, SameSite.
CSP и сессии
Снижение XSS через CSP и санитизацию важнее спора «куки vs LS» — оба варианта ломаются при наличии произвольного JS.
Не кладите в JWT чувствительные ПДн без необходимости; токен декодируется клиентом.