Проверка безопасности токена JWT с помощью Ruby - PullRequest
0 голосов
/ 01 апреля 2019

Я использую ruby-jwt gem для генерации токена.Я не уверен, что это безопасно или нет?Как я могу защитить свою полезную нагрузку.Я пробовал разные способы, но все еще могу взломать полезную нагрузку.

> payload = {email: "gagangami@gmail.com", token: "xyz@123"}
# Way1
> token1 = JWT.encode(payload, Rails.application.secrets.secret_key_base, 'HS256')
#=> "eyJhbGciOiJIUzI1NiJ9.eyJlbWFpbCI6ImdhZ2FuZ2FtaUBnbWFpbC5jb20iLCJ0b2tlbiI6Inh5ekAxMjMifQ.l42W9P4lyP2XWXytu8qpasc6mAFg01Dg57Az1bfxgS8"

# Way 2
> rsa_private = OpenSSL::PKey::RSA.generate 2048
> rsa_public = rsa_private.public_key
> token2 = JWT.encode payload, rsa_private, 'RS256'
 => "eyJhbGciOiJSUzI1NiJ9.eyJlbWFpbCI6ImdhZ2FuZ2FtaUBnbWFpbC5jb20iLCJ0b2tlbiI6Inh5ekAxMjMifQ.U6DO9f9KZ_-GVhviACpXmuyc0dQUznPxZdCaaspr5JP36EweAuP8Wn_R2jvK2ahW0BR-RAh7Z9ChyIk94tDjasSbUYdoW_re299RB-ZmS0NVpCEa-g20sT-5JKCTwbD25vXYdxM4E0swQ81sKw35H5T8ZXSHsrE4bP5mA-me_Wli3hyGacb5O3esStPMdRC5r20qCoK7QW7Wl7NnZHLYjIn8k7lxsFmheNyl1l3OSLY92bxGkSyx4lom6bWqEMXSFdLWqPdKTOX9RZbNVi_6fGms79W6XXnb29htqkM1Z1h0RLXzjCODbALpa7At88xWr32IkHzwNxRJ28VAOJB3Qw"

Если я пытаюсь декодировать токен JWT вручную без секрета, это выдает ошибку.работает отлично.

Но если я вставлю выше токен token1 и token2 в https://jwt.io/, я смогу увидеть полезную нагрузку.Это безопасный путь или ошибка?Для справки прилагаю два скриншота.enter image description here enter image description here

Ответы [ 2 ]

1 голос
/ 01 апреля 2019

Расшифровать может любой, но только тот, кто имеет ваш секрет, может проверить токен.

Важно понимать, что цель использования JWT - НЕ скрывать или не скрывать данные каким-либо образом. Причина использования JWT состоит в том, чтобы доказать, что отправленные данные были действительно созданы из подлинного источника.

https://medium.com/vandium-software/5-easy-steps-to-understanding-json-web-tokens-jwt-1164c0adfcec

1 голос
/ 01 апреля 2019

JWT не для шифрования, а для идентификации.

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

Например. Джон отправляет вам сообщение «он дома» и подписывает его своим закрытым ключом. Каждый может прочитать это сообщение, но вы можете убедиться, что оно действительно отправлено Джоном, а не кем-то еще, как Алиса.

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