Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про Golang: jwt, security, authentication

Почему не стоит хранить логин/пароль в JWT?

Вопрос выявляет понимание уязвимостей JWT и лучших практик безопасности.

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

JWT легко декодировать (хотя и нельзя изменить без ключа). Хранение пароля в токене рискованно: если токен украдут, злоумышленник получит доступ к аккаунту. Лучше хранить только идентификатор пользователя (sub) и проверять пароль при каждом входе.

Длинный ответ

1. Проблемы безопасности

  • JWT не шифруется (только кодируется в Base64).
    Любой может декодировать токен и увидеть данные:

    echo "eyJ...XVCJ9" | base64 --decode
  • Утечка токена = утечка пароля
    Если токен украден (например, через XSS), злоумышленник узнает пароль, который может использоваться на других сервисах.

2. Что хранить вместо пароля

  • Идентификатор пользователя (sub)

    {
      "sub": "user123",
      "role": "admin"
    }
  • Время жизни (exp) — чтобы токен не действовал вечно.

3. Альтернативы

  • Хеш пароля (но это избыточно, JWT уже подписан).

  • Одноразовые токены + refresh_token для обновления сессии.

Вывод:
JWT предназначен для передачи минимальных данных. Пароль должен проверяться только при входе, а не храниться в токене.

Уровень

  • Рейтинг:

    2

  • Сложность:

    6

Навыки

  • Golang

    Golang

Ключевые слова

#jwt

#security

#authentication

Подпишись на Golang Developer в телеграм