Безопасность
JWT pitfalls: свободное припоминание
Припоминание сильнее перечитывания. На каждый промпт проговори или запиши полный ответ по памяти, прежде чем открыть модельный — именно усилие припоминания закрепляет защиту, когда ты ревьюишь реальный auth-код.
Восстанови ключевые механизмы юнита — пиннинг алгоритма, привязку ключа, проверки claim, отзыв, ротацию и компромиссы хранения — не подглядывая в урок.
- 01Разбери атаку путаницы алгоритмов RS256→HS256 и две защиты RFC 8725, которые её останавливают.
- 02Signature проверена корректно. Почему этого необходимо, но недостаточно, и какие claim нужно проверить ещё?
- 03Как заголовок kid (или jku/x5u) превращается в уязвимость инъекции ключа и как её нейтрализовать?
- 04Почему у stateless JWT нет настоящего logout и как короткие TTL плюс ротация refresh-токена сдерживают украденный токен?
- 05Сравни localStorage, httpOnly cookie и хранение в памяти для токенов. Какую атаку приглашает каждое и как митигировать?
- 06Почему HMAC-секрет должен быть минимум 256 случайных бит из CSPRNG и что идёт не так с выбранным человеком?
Если ты смог восстановить каждый ответ по памяти, ты держишь хребет юнита: пинь алгоритм и привязывай каждый ключ к одному алгоритму, чтобы alg:none и путаница RS256→HS256 не сработали; считай валидную signature необходимой, но недостаточной и валидируй exp/nbf/iss/aud; резолви kid/jku только по закреплённому allowlist, чтобы заголовок не инжектил ключ; сдерживай украденный токен короткими TTL access и ротацией refresh-токена с детектом повтора, раз настоящего logout нет; выбирай хранение по тому, какую атаку предпочитаешь защищать; и используй 256-битный секрет из CSPRNG, чтобы HMAC нельзя было взломать офлайн.