Является ли аутентификация без сохранения состояния в основном с использованием JWT действительно безопасной? - PullRequest
0 голосов
/ 25 апреля 2018

У меня давно такой вопрос, что JWT действительно безопасен? Потому что с точки зрения кодирования требований и полезной нагрузки мы можем легко декодировать токен, и это декодирование также доступно на веб-сайте. Поэтому я хочу сказать, что любой может просто изменить заголовок аутентификации, используя такие инструменты, как burpsuite или что-то еще, и дать какой-нибудь другой действительный токен и аутентифицировать поддельного пользователя. Хранение токена в localStorage, как это рекомендовано многими, также может быть менее безопасным. Поэтому мой вопрос - действительно ли это безопасно по сравнению с зашифрованными куки или сеансом? Каковы преимущества аутентификации без сохранения состояния? Я прочитал много статей о том, что JWT хороши для одностраничного приложения. Это правда?

1 Ответ

0 голосов
/ 25 апреля 2018

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


В веб-приложениях к токенам доступа не должен обращаться ни JavaScript, ни хранимый влокальное хранилище.Вместо этого токены доступа следует отправлять через HTTPS-соединение и сохранять в файле cookie с установленными флагами Secure и HttpOnly:

4.1.2.5.Атрибут Secure

Атрибут Secure ограничивает область действия cookie «защищенными» каналами (где «secure» определяется агентом пользователя).Когда cookie имеет атрибут Secure, пользовательский агент будет включать cookie в HTTP-запрос, только если запрос передается по безопасному каналу (обычно HTTP по протоколу безопасности транспортного уровня (TLS)).[...]

4.1.2.6.Атрибут HttpOnly

Атрибут HttpOnly ограничивает область действия куки-файла HTTP-запросами.В частности, атрибут инструктирует пользовательский агент пропускать куки при предоставлении доступа к куки через API «не HTTP» (например, API веб-браузера, который предоставляет куки для скриптов).[...]


В JWT полезной нагрузкой является строка JSON, закодированная как Base64.Поэтому он не подходит для хранения конфиденциальных данных, таких как пароли.

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

Токены JWT должны быть подписаны с помощью сильного криптографического ключа (который должен быть защищен насервер), и подпись должна быть проверена перед доверием токена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...