о jsonwebtoken aka jwt [дубликат]

Давайте посмотрим на лес сначала, прежде чем смотреть на деревья.

Здесь есть много информативных ответов с большими подробностями, я не буду повторять ни одного из них. Ключ к программированию в JavaScript имеет сначала правильную ментальную модель общего исполнения.

  1. Ваша точка входа (ов) выполняется в результате события. Например, в браузер загружается тег сценария с кодом. (Соответственно, поэтому вам, возможно, придется заботиться о готовности страницы запускать ваш код, если он требует, чтобы элементы dom были сконструированы первыми и т. Д.)
  2. Ваш код выполняется до завершения, однако многие асинхронные вызовы, которые он делает, без выполнения каких-либо ваших обратных вызовов, включая запросы XHR, установку тайм-аутов, обработчиков событий dom и т. д. Каждый из этих обратных вызовов, ожидающих выполнения, будет находиться в очереди, ожидая, что их очередь будет запущена после других событий
  3. Каждый отдельный обратный вызов XHR-запроса, установленного таймаута или dom события после вызова будет завершен.

Хорошие новости заключается в том, что, если вы хорошо понимаете этот момент, вам никогда не придется беспокоиться о гоночных условиях. Прежде всего вы должны понимать, как вы хотите упорядочить свой код как по существу ответ на разные дискретные события, и как вы хотите объединить их в логическую последовательность. Вы можете использовать обещания или новые асинхронные / ожидающие более высокие уровни в качестве инструментов для этой цели, или вы можете откатывать свои собственные.

Но вы не должны использовать какие-либо тактические инструменты для решения проблемы, пока вам не понравится актуальная проблемная область. Нарисуйте карту этих зависимостей, чтобы знать, что нужно запускать, когда. Попытка ad-hoc подхода ко всем этим обратным вызовам просто не поможет вам.

154
задан PixMach 4 December 2014 в 19:42
поделиться

5 ответов

207
ответ дан Valentin Michalak 3 September 2018 в 15:39
поделиться

Вы можете перейти к jwt.io , вставить маркер и прочитать содержимое. Это изредка для многих людей изначально.

Короткий ответ: JWT не относится к шифрованию. Он заботится о валидации. То есть, он всегда может получить ответ для «Использовать содержимое этого токена»? Это означает, что манипулирование пользователем токена JWT бесполезно, потому что сервер будет знать и игнорировать токен. Сервер добавляет подпись на основе полезной нагрузки при выдаче токена клиенту. Позже он проверяет полезную нагрузку и сопоставимую подпись.

Логическим вопросом является то, что является мотивацией не к самому себе с зашифрованным содержимым?

  1. Простейшая причина в том, что она предполагает это большая проблема. Например, если вы работаете с клиентом, например с веб-браузером, вы можете хранить токены JWT в файле cookie, который является secure + httpsOnly (не может быть прочитан Javascript +, не может быть прочитан HTTP) и разговаривает с сервером по зашифрованный канал (HTTPS). Как только вы узнаете, что у вас есть безопасный канал между сервером и клиентом, вы можете безопасно обменивать JWT или что-то еще, что вы хотите.
  2. Это упрощает задачу. Простая реализация упрощает принятие, но также позволяет каждому слою делать то, что он делает лучше всего (пусть HTTPS обрабатывает шифрование).
  3. JWT не предназначен для хранения конфиденциальных данных. Когда сервер получает токен JWT и проверяет его, он может свободно искать идентификатор пользователя в своей собственной базе данных для получения дополнительной информации для этого пользователя (например, разрешения, почтовый адрес и т. Д.). Это уменьшает размер JWT и предотвращает непреднамеренную утечку информации, потому что все знают, что не хранить конфиденциальные данные в JWT.

Это не слишком отличается от того, как работают файлы cookie. Файлы cookie часто содержат незашифрованные данные. Если вы используете HTTPS, тогда все будет хорошо. Если вы этого не сделаете, рекомендуется зашифровать сами файлы cookie. Не делать этого будет означать, что возможна атака «человек в середине» - прокси-сервер или интернет-провайдер читает файлы cookie, а затем повторяет их позже, притворяясь вами. По аналогичным причинам JWT следует всегда обменивать на безопасном уровне, таком как HTTPS.

66
ответ дан aleemb 3 September 2018 в 15:39
поделиться

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

Важно понимать различие между эмитентом и верификатором. Получатель токена отвечает за его проверку.

В безопасном использовании JWT в веб-приложении есть два важных шага: 1) отправить их по зашифрованному каналу и 2) проверить подпись сразу после получения Это. Асимметричный характер криптографии с открытым ключом делает проверку подписи JWT возможной. Открытый ключ проверяет, что JWT был подписан его соответствующим личным ключом. Никакая другая комбинация клавиш не может выполнять эту проверку, тем самым предотвращая попытки олицетворения. Следуйте этим двум шагам, и мы с математической гарантией можем гарантировать подлинность JWT.

More reading: Как открытый ключ проверяет подпись?

7
ответ дан Community 3 September 2018 в 15:39
поделиться

Данные внутри JWT подписаны и зашифрованы, это не значит, что они безопасны. JWT не обеспечивает гарантии для конфиденциальных данных.

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

Насколько мне известно, JWT не обеспечивает безопасность.

Спасибо

-7
ответ дан Naveen Kumar Madipally 3 September 2018 в 15:39
поделиться

Только закрытый ключ JWT, который находится на вашем сервере, расшифрует зашифрованный JWT. Те, кто знает privateKey, смогут расшифровать зашифрованный JWT.

Скрыть privateKey в безопасном месте на вашем сервере и никому не сообщать privateKey.

3
ответ дан sdfdsf sdf 3 September 2018 в 15:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: