JWT pitfalls на собеседовании системного аналитика
Карьерник — Duolingo для аналитиков: 10 минут в день тренируй SQL, Python, A/B, статистику, метрики и ещё 3 темы собеса. 1500+ вопросов в Telegram-боте. Бесплатно.
Содержание:
Зачем разбирать pitfalls
JWT — popular, но often misimplemented. Senior SA должен ловить.
alg=none attack
JWT header specifies algorithm. alg: none — no signature.
Some libraries default accept «none» → attacker forges любой JWT.
Defense. Whitelist accepted algorithms (HS256 или RS256 only). Reject «none», «alg» mismatches.
Weak secrets
HMAC signature requires secret. Если secret короткий / guessable → brute-force.
secret = "secret123"Cracked в seconds.
Defense. Long random secrets (256+ bits). Rotate periodically.
No expiry
JWT без exp claim — valid forever. Stolen token = lifetime compromise.
Defense. Always include exp. Short-lived (15-60 min) + refresh tokens.
Revocation
JWT stateless — server не has «sessions».
Problem. Сompromised token — нельзя immediately invalidate (валиден до expiry).
Solutions:
- Short-lived tokens.
- Blacklist compromised JTI (jwt id).
- Token introspection endpoint (defeats statelessness, но secure).
Key rotation
Periodic rotate signing keys.
JWKS. JSON Web Key Set — public endpoint listing current valid keys.
GET /.well-known/jwks.json
{
"keys": [
{"kid": "key-2026-05", "kty": "RSA", "n": "...", "e": "..."},
{"kid": "key-2026-04", ...} // old, still verifying old tokens
]
}Servers fetch periodically. Smooth key rotation.
kid (key ID) в JWT header — points to right key.
Связанные темы
- JWT на собесе SA
- OAuth 2.1 flows для SA
- Secrets management для SA
- mTLS для SA
- Подготовка к собесу системного аналитика
FAQ
Это официальная информация?
Нет. Статья основана на RFC 7519 (JWT) и OWASP cheat sheets.
Тренируйте системный анализ — откройте тренажёр с 1500+ вопросами для собесов.