2016-10-01 118 views
0

成功登录后,我的节点应用程序返回JWT令牌。篡改有效的JWT令牌

JWT使用用户ID,到期日期和密码进行签名。

这是我将如何产生与ID的用户令牌:由于我的后台应用程序标识从它的令牌用户

return jwt.sign({ 
     _id: 1, 
     exp: exp_date), 
    }, "MY_SECRET"); 
    }; 

难道与用户有可能“1 id:1“来编辑他的有效标记,将它设置为”id:2“,然后开始在后端应用程序中混淆,就好像他是用户使用”id:2“一样?

回答

2

不除非有人得到了你的私人密钥访问你使用签署JSON

1

秘密是用来签署后验证它的有效载荷。请查看JWT网站(https://jwt.io/),其中显示了相当好的概念。

令牌载荷未加密,因此每个人都可以读取并可能对其进行修改。通过最初对有效负载进行签名,可以在验证令牌时识别修改。因此,如果有人修改了用户标识,则有效载荷的哈希总和将发生变化,并且没有您的密钥,则无法重新创建签名。所以你可以保证令牌不会被无法识别地操纵。

除了使用必须在签名实例和想要验证令牌的实例之间共享的简单秘密之外,还可以在使用私钥和令牌有效性进行签名的情况下使用公钥密码术可以由不允许创建签名令牌本身的证书进行验证。我建议这种分布式设置的方法,因为当一个非签名服务受到攻击时,没有机会操纵令牌。