как это предотвратить атаку со стороны злоумышленника, который может видеть пакеты пользователя?
Тот факт, что вы видите чьи-то пакеты, не означает, что вы можете видеть их содержимое. HTTPS шифрует трафик c, поэтому, даже если кому-то удастся перехватить ваш трафик c, он не сможет извлечь из него JWT. Каждый веб-сайт, использующий аутентификацию, должен работать только через HTTPS. Если кто-то сможет выполнить атаку «злоумышленник посередине», то это уже другая история.
они смогут скопировать токен и использовать его для входа в систему и доступа к защищенному ресурсу.
Да, но только как пользователь, у которого они украли токен. JWT подписаны, что означает, что вы не можете изменять их содержимое без нарушения подписи, которая будет обнаружена сервером (по крайней мере, с вычислительной точки зрения невозможно найти конфликт ha sh, чтобы вы могли изменить содержимое JWT) . Для высокочувствительного доступа (банковские счета, медицинские данные, учетные записи администратора корпоративного облака ...) вам потребуется как минимум двухфакторная аутентификация.
И если злоумышленник может украсть токен один раз, может t они делают это снова после обновления sh?
Возможно, но это зависит от того, как был открыт токен. Если атакованный находится на незашифрованном канале между вами и сервером, тогда он уверен, что он может повторить тот же процесс, но это воздействие может быть результатом временного сбоя / человеческой ошибки, которая может быть вскоре исправлена, что предотвратит использование токена после атаки. истекает.
Нет ли способа проверить, что токен, отправленный клиентом, отправляется тем же клиентом, которому вы его отправили?
Если злоумышленник успешно выполняет атаку «человек посередине», они могут подделать любую информацию, которую вы могли бы использовать для проверки клиента, поэтому ответ будет отрицательным, 100% надежного способа проверки клиента не существует.
Самая большая проблема, которую я вижу с JWT, - это не сами JWT, а то, как они обрабатываются некоторыми людьми (хранятся в незашифрованном локальном хранилище браузера, содержащем PII, без HTTPS, без двухфакторной аутентификации, где это необходимо, и т. Д. c ...)