Является ли использование токенов JWT безопасным способом обхода пользовательских сеансов? - PullRequest
1 голос
/ 10 июля 2020

Я пытаюсь создать систему регистрации / входа в систему с использованием стека PERN (Postgres, Express, React & Node) для клиентского веб-сайта.

Я проводил некоторые исследования и наткнулся на HTTP Cook ie и авторизация токенов JWT (намного больше, но очевидно, что эти два являются доминирующими). ​​

Я заметил, что многие приложения и учебные пособия, которые используют Node JS, похоже, много используют JWT, и хранят их в localstorage . Но я сомневаюсь в безопасности, потому что я чувствую, что разработчик может в основном go в localstorage и получить токен JWT, который o

Есть ли лучший способ защитить аутентификацию пользователей с помощью этого стека или использует localstorage практическое правило? Если да, то почему?

Спасибо за ваше время.

Ответы [ 2 ]

0 голосов
/ 27 августа 2020

Безопасность передачи данных по сети - это всего лишь один случай всего решения в веб-приложениях.

В настоящее время я изучаю тот же самый топи c и, как вы сказали, много руководств, блогов, YouTube и прочего sources дает отличные примеры использования токенов JWT для обработки пользовательских данных. К сожалению, вряд ли кто-нибудь go наиболее глубоко разбирающийся в пользовательских сеансах с точки зрения администрирования - там, где начинаются настоящие проблемы.

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

Обратитесь к этим источникам: http://cryto.net/~joepie91/blog/2016/06/13/stop-using-jwt-for-sessions/ Выйти / аннулировать JWT

Повар сеанса ie с данными сеанса, хранящимися на стороне сервера, в настоящее время является лучшим вариантом для веб-приложения.

0 голосов
/ 10 июля 2020

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

Что касается вашего другого пограничного случая, когда кто-то пытается Чтобы обнюхать JWT в локальном хранилище, вы можете рассмотреть несколько вариантов:

  • Во-первых, природа JWT состоит в том, что он обычно защищен от взлома. JWT содержит внутри контрольную сумму , которая является уникальным ha sh на основе фактического содержимого JWT. Предположим, что какой-то злонамеренный пользователь обнюхал локальное хранилище, а затем попытался изменить, например, раздел требований JWT. При этом это также изменит контрольную сумму (которую этот пользователь не сможет вычислить из-за отсутствия ключа сервера). Затем, в следующий раз, когда скомпрометированный JWT будет отправлен на сервер, сервер отклонит его, потому что вычисленная контрольная сумма не будет соответствовать значению, содержащемуся в JWT. недостаточно безопасно, можно передавать зашифрованный JWT. Если вы выберете go с этой опцией, и сервер, и клиент будут шифровать / дешифровать перед отправкой JWT, что добавляет дополнительный уровень защиты.
...