Токен в localStorage доступен любому JS на странице — при XSS злоумышленник читает его напрямую; httpOnly cookie недоступна из JS и снижает ущерб при инъекции.
Комбинируйте короткий access JWT с refresh по защищённому каналу и ротацией refresh в БД для отзыва сессий.
- [JSON Web Token — OWASP Cheat Sheet Series](https://cheatsheetseries.owasp.org/cheatsheets/JSON_Web_Token_for_Java_Cheat_Sheet.html) — Рекомендации по хранению и валидации (применимо шире Java).
- [Set-Cookie — MDN (SameSite)](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie) — Атрибуты Secure, HttpOnly, SameSite.
---
## CSP и сессии
Снижение XSS через CSP и санитизацию важнее спора «куки vs LS» — оба варианта ломаются при наличии произвольного JS.
Не кладите в JWT чувствительные ПДн без необходимости; токен декодируется клиентом.
