Подтвердите зарегистрированного пользователя с помощью JWT - PullRequest
0 голосов
/ 25 февраля 2019

Я использую аутентификацию JWT с ASP.NET Core Web API.Процесс, которому я следую.

  1. Создайте токен на стороне сервера и отправьте его клиенту.
  2. Клиент отправляет токен в заголовке при каждом запросе. \
  3. Сервер проверяет токен и отвечает запрошенной информацией.

Я храню токен в локальном хранилище клиента.Моя проблема в том, что

  1. Войдите в систему как два отдельных пользователя из двух разных браузеров (Войдите в систему, используя имя пользователя и пароль, как при обычном входе в систему).
  2. Поменяйте местами токен, хранящийся влокальное хранилище двух пользователей.

Сервер по-прежнему проверяет токены как действительные, даже если запросы поступают от разных пользователей.

Просто любой может взломать систему, просто изменив ее.локальное хранилище с действительным токеном.

Как мне устранить эту лазейку в безопасности?

Ответы [ 4 ]

0 голосов
/ 25 февраля 2019

JWT - это только один уровень защищенной системы.Они существуют для надежной идентификации аутентифицированного пользователя и, возможно, включают в себя дополнительные данные авторизации о пользователе (роли, утверждения и т. Д.) Таким образом, что вмешательство может быть возможным , но также может быть легко обнаружено.

Итак, вы правы, для построения безопасной системы требуются дополнительные меры, такие как:

  1. Отправляйте токены только по защищенным каналам, чтобы предотвратить атаки MITM.
  2. Дайте токенам короткое время жизни, чтобы возможные окна атаки и эксплойта были узкими.
  3. Убедитесь, что пользователь вышел из системы (и токен признан недействительным) после x минут бездействия пользователя.
0 голосов
/ 25 февраля 2019

Вы правы, но именно так работает JWT.

Возможные решения: использовать безопасные cookie-файлы Http и читать JWT из cookie-файлов вместо использования и хранения токена из localsotage

Пингуйте меня, если у вас естьлюбой запрос по этому

0 голосов
/ 25 февраля 2019

Ты прав.Если у кого-то есть токен, он может без проблем обратиться к серверной части.Это означает, что они могут сделать слишком много с украденным токеном.Вот почему токены часто имеют истечение срока действия и обновляют токены.

На мой взгляд, я думаю, вам следует установить короткое время истечения для токена и использовать механизм обновления токена

0 голосов
/ 25 февраля 2019

Одним из распространенных способов предотвращения является использование IP-адреса источника (откуда он вошел) как часть подписанного JWT.Из-за этой проблемы безопасности JWT также обычно хранится с использованием безопасных механизмов.Вы можете найти лучшие способы хранения вашего JWT на основе клиента и используемой вами платформы.

...