Что верно про использование JWT для аутентификации?
- Какие проблемы у JWT?
- Где хранить JWT в браузере?
- Как отозвать JWT?
JWT самодостаточен — сервер проверяет подпись без базы. Отсюда главный минус: его нельзя отозвать до истечения. Решение — короткий access-токен (минуты) и отзываемый refresh, хранимый на сервере.
- Payload только подписан, не зашифрован — не класть персональные данные
- Алгоритм фиксировать на сервере: атаки с
alg: noneи подменой RS256 на HS256 - Хранение: httpOnly-cookie защищена от XSS, но нужна защита от CSRF; localStorage — наоборот
А ещё Для обычного веб-приложения сессия на сервере часто проще и не хуже
Подробно
Устройство. Заголовок, полезная нагрузка (claims) и подпись, каждая часть в base64url. Сервер проверяет подпись своим ключом и не ходит в базу — это хорошо масштабируется и удобно между сервисами (особенно с асимметричной подписью RS256/ES256: проверять может любой по открытому ключу).
Ловушки:
- отзыв — выход пользователя, смена пароля, блокировка не отменяют уже выданный токен. Решения: короткий срок жизни access (5–15 минут) и refresh с сервером-хранилищем, который можно отозвать; чёрный список id токенов (jti) — но это снова поход в хранилище;
- открытый payload — его прочитает любой; персональные и секретные данные не кладут;
- алгоритм — проверять с явно заданным ожидаемым алгоритмом. Иначе атакующий ставит
alg: noneили подписывает HS256 открытым ключом, который библиотека примет за секрет; - размер — токен уходит с каждым запросом; не раздувать claims;
- проверка полей —
exp,nbf,iss,aud.
Где хранить в браузере — симметричный выбор:
- httpOnly-cookie — скрипт не прочитает (защита от кражи через XSS), но браузер сам отправляет cookie — нужна защита от CSRF (SameSite, токен);
- localStorage / память — CSRF не страшен, но любой XSS украдёт токен.
Что хотят услышать
- Самодостаточность и проблема отзыва, схема access + refresh.
- Открытый payload и атаки на алгоритм.
- Компромисс хранения: cookie против localStorage.
Частые ошибки
- «localStorage безопаснее cookie».
- Долгоживущие access-токены без возможности отзыва.
Проверьте себя
Несколько верных вариантов. Подумайте, потом откройте ответ.
Показать варианты и ответ
- ✓Самодостаточный токен не отозвать до истечения — отсюда короткий access и refresh
- ✗Хранить JWT в localStorage безопаснее, чем в httpOnly-cookie: так он недоступен для CSRF и XSS
- ✓Payload лишь закодирован base64, не зашифрован — персональные данные туда не кладут
- ✓Алгоритм подписи фиксируют на сервере, иначе возможна его подмена
Что спросят дальше
- Как реализовать немедленный отзыв доступа при блокировке пользователя?
- Когда обычная серверная сессия лучше JWT?
Разбор темы
- Безопасность приложения: OWASP, доступ и секреты
OWASP Top 10 в редакции 2025, разница аутентификации и авторизации, ловушки JWT против сессий, хранение паролей и секретов, безопасность цепочки поставок.
Связанные вопросы
Разбор собеседования с sotto
После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.