JWT的安全性如何?

时间:2016-03-05 17:27:21

标签: security token jwt

我正在了解JWT项目的安全性,但我有一个问题。如果我在登录后正确收到令牌,但是其他地方的其他人(黑客)窃取了这个特定令牌,他可以访问我的会话吗?使用JWT身份验证的服务器能够检测到这一点并保护我吗?怎么样?

1 个答案:

答案 0 :(得分:40)

只有服务器应该知道用于生成JWT的“秘密”。如果有人修改了JWT中包含的数据,服务器将无法对其进行解码。因此服务器可以信任它可以解码的任何JWT。

但是,如果黑客可以访问您的计算机,他们可以看到存储在浏览器中的JWT并使用它。同样的威胁存在w / cookies,所以它并不是JWT的缺陷。

缓解此威胁的一种方法是JWT的到期日期。对于银行应用程序,您的JWT可能会在几分钟后过期。对于Facebook,它可能会在几个月后过期。但是,如果有人访问您的浏览器,则没有防弹解决方案。

黑客的另一种方法是“中间人”攻击,以拦截客户端和服务器之间的网络流量,并获取cookie / JWT。应始终通过HTTPS 发送 Cookie / JWT以防止此情况。

重要编辑

最后,回答你标题中的问题,“JWT的安全性如何?”:这取决于你如何存储令牌。本地存储不如使用Cookie(reference)安全,但Cookie可能会受到CSRF or XSRF攻击。

这个答案过去常说JWT比cookie更安全,因为cookie受到CSRF攻击。但是将JWT存储在本地存储中也不安全。因此,我不再将JWT存储在本地存储中,而是使用众所周知的技术来缓解CSRF攻击。