Можно ли в payload JWT хранить секреты?

В обычном подписанном JWT payload читается без секретного ключа: Base64URL — не шифрование. Пароли, API-ключи и другие секреты туда помещать не следует.

Короткий ответ

Что ответить на собеседовании

В обычном подписанном JWT payload читается без секретного ключа: Base64URL — не шифрование. Пароли, API-ключи и другие секреты туда помещать не следует.

Подробный разбор

Ответ с пояснениями

В обычном подписанном JWT payload читается без секретного ключа: Base64URL — не шифрование. Пароли, API-ключи и другие секреты туда помещать не следует.

Подпись защищает от незаметного изменения, но не от просмотра обладателем токена или человеком, получившим его из лога. Для конфиденциальности существует JWE, однако это отдельная схема с управлением ключами, а не свойство любого JWT. Обычно безопаснее хранить минимум идентификаторов и разрешённых claims, а чувствительные данные оставлять на сервере. Сам токен тоже следует считать секретным credential.

Источник: cheatsheetseries.owasp.org.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее