Cryptography Json Web令牌是否足够安全?如何确保有效载荷的安全?

Cryptography Json Web令牌是否足够安全?如何确保有效载荷的安全?,cryptography,jwt,Cryptography,Jwt,当我转到时,我看到此编码令牌: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c 如果我转到,复制粘贴令牌值并推送解码,我会得到以下结果: {"alg":"HS256","typ":"JWT"}{"sub":"1234567890","

当我转到时,我看到此编码令牌:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
如果我转到,复制粘贴令牌值并推送
解码
,我会得到以下结果:

{"alg":"HS256","typ":"JWT"}{"sub":"1234567890","name":"John Doe","iat":1516239022}
如果我从
HS256
切换到
RS256
,我现在得到这个令牌:

eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.TCYt5XsITJX1CxPCT8yAV-TVkIEq_PbChOMqsLfRoPsnsgw5WEuts01mq-pQy7UJiN5mgRxD-WUcX16dUEMGlv50aqzpqh4Qktb3rk-BuQy72IFLOqV0G_zS245-kronKb78cPN25DGlcTwLtjPAYuNzVBAh4vGHSrQyHUdBBPM

而且它也可以用base64轻松解码。所以,我的问题是,这是否是预期的行为?如果是,使用不同算法(HS256、RS256等)的原因是什么?如果无论我们使用什么算法,我们都可以使用base64解码轻松读取内容?

那么Jwt并不意味着保护用于验证声明的内容,即当您使用Jwt签署请求时,在解码时,用户/系统必须拥有密钥。因此,要回答您的问题,是的,这是预期的行为,base 64编码仅用于通过URL进行传输,而不是保护它。最后一点,如果我可以澄清的话,对声明的验证仅仅是指你告诉系统你是什么/你是谁,并且签名的内容甚至一点也没有改变,对编码签名的任何部分的任何更改都将导致签名失败;因此,该主张将不再是真实的或真实的。要查看此内容,请尝试在终端中对类似的内容进行编码
导入jwt
encoded=jwt.encode({'name':'somename'},'somesecretkey',algorithm='HS256')

然后复制生成的令牌,然后删除或向字符串中添加一个字母,并尝试使用相同的密钥进行解码,然后看着它失败或再次尝试在codebeautify执行相同的操作

从我刚才的快速阅读中,JWT似乎不打算隐藏任何内容-它旨在通过添加签名来确保完整性。这个签名包含在编码的令牌中,但它并没有显示在您发布的解码部分。您实际看到的可能是一个JWS,一个签名的令牌。如果您确实需要隐藏有效负载,请查看JWE,即加密令牌。