Подтвердить что ты не робот

Насколько безопасен JWT?

Я узнаю о JWT для безопасности моего проекта, но у меня есть вопрос. Если я правильно получаю маркер после входа в систему, но кто-то другой (хакер) в другом месте крадет этот конкретный токен, может ли он получить доступ к моей сессии? Сервер, использующий аутентификацию JWT, способен обнаружить это и защитить меня? Как?

4b9b3361

Ответ 1

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

Однако, если хакер получил доступ к вашему компьютеру, они могли видеть JWT, который хранится в браузере и использовать его. Эта же угроза существует с помощью файлов cookie, поэтому это не является недостатком JWT.

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

Другим подходом для хакеров будет атака "человек в середине", чтобы перехватить сетевой трафик между клиентом и сервером и получить в cookie/JWT. cookie/JWT всегда следует отправлять через HTTPS, чтобы предотвратить это.

ВАЖНОЕ ИЗМЕНЕНИЕ

Наконец, чтобы ответить на вопрос в вашем заголовке: "Насколько безопасно JWT?": это зависит от того, как вы храните токен. Локальное хранилище не так безопасно, как использование файлов cookie (ссылка), но файлы cookie могут быть использует CSRF или XSRF.

Этот ответ использовался, чтобы сказать, что JWT был безопаснее, чем файлы cookie, поскольку файлы cookie подвергались атакам CSRF. Но хранение JWT в локальном хранилище также небезопасно. В результате я больше не хранил JWT в локальном хранилище и не использовал хорошо известные методы для уменьшения атак CSRF.