Разбери, можно ли хранить токен в Cookies: при каких условиях и какие ограничения.
DOM и браузер
Хранить токен в cookie можно и часто рекомендуется, но безопасно только с флагами `HttpOnly`, `Secure` и `SameSite`; иначе есть риски XSS и CSRF.
Почему cookie — хороший вариант
- С флагом HttpOnly cookie недоступна из JavaScript → токен не украсть через XSS (в отличие от localStorage).
- Отправляется на сервер автоматически — удобно для сессий.
Set-Cookie: token=abc; HttpOnly; Secure; SameSite=LaxОбязательные условия безопасности
- HttpOnly — защита от кражи через XSS.
- Secure — только по HTTPS.
- SameSite (
Lax/Strict) — защита от CSRF (не слать cookie при кросс-сайт запросах).
Ограничения и риски
- Без
HttpOnlycookie читается из JS → та же уязвимость к XSS, что и localStorage. - Cookie автоматически шлётся с запросами → без
SameSiteуязвима к CSRF (нужны токены/SameSite). - Ограничение ~4 КБ.
- При кросс-доменной архитектуре нужен
SameSite=None; Secure+ настройка CORS credentials.
Практика
- Refresh token → HttpOnly cookie (безопасно, недоступен JS).
- Access token → часто держат в памяти (нужен в JS для заголовка
Authorization).
Коротко для собеседования
Да, хранить токен в cookie можно и предпочтительно с HttpOnly (защита от XSS), Secure (HTTPS), SameSite (защита от CSRF). Без этих флагов cookie так же уязвима, как localStorage. Refresh token — в HttpOnly cookie, access — обычно в памяти.