我正在了解JWT以确保项目的安全性,但我有一个问题.如果我在登录后正确收到令牌,但是其他地方的其他人(黑客)窃取了这个特定令牌,他可以访问我的会话吗?使用JWT身份验证的服务器能够检测到这一点并保护我吗?怎么样?
只有服务器应该知道用于生成JWT的"秘密".如果有人修改了JWT中包含的数据,服务器将无法对其进行解码.因此服务器可以信任它可以解码的任何JWT.
但是,如果黑客可以访问您的计算机,他们可以看到存储在浏览器中的JWT并使用它.同样的威胁存在w/cookies,所以它并不是JWT的真正缺陷.
缓解此威胁的一种方法是JWT的到期日期.对于银行应用程序,您的JWT可能会在几分钟后过期.对于Facebook,它可能会在几个月后过期.但是,如果有人访问您的浏览器,则没有防弹解决方案.
黑客的另一种方法是"中间人"攻击,以拦截客户端和服务器之间的网络流量,并获取cookie/JWT.该饼干/ JWT应该总是通过HTTPS来发送,以防止这一点.
重要编辑
最后,回答你标题中的问题,"JWT的安全性如何?":这取决于你如何存储令牌.本地存储不如使用cookie(参考)那么安全,但cookie可能受到CSRF或XSRF攻击.
这个答案过去常说JWT比cookie更安全,因为cookie受到CSRF攻击.但是将JWT存储在本地存储中也不安全.因此,我不再将JWT存储在本地存储中,而是使用众所周知的技术来缓解CSRF攻击.