Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Security JWT有多安全?_Security_Token_Jwt - Fatal编程技术网

Security JWT有多安全?

Security JWT有多安全?,security,token,jwt,Security,Token,Jwt,为了项目的安全,我正在学习JWT,但我有一个问题。如果我在登录后正确收到令牌,但其他地方的其他人(黑客)窃取了这个特定令牌,他可以访问我的会话吗?使用JWT身份验证的服务器是否能够检测并保护我?如何操作?只有服务器应该知道用于生成JWT的“秘密”。如果有人修改JWT中包含的数据,服务器将无法对其进行解码。因此,服务器可以信任它可以解码的任何JWT 但是,如果黑客访问了您的计算机,他们可以看到存储在浏览器中的JWT并使用它。同样的威胁也存在于cookies中,所以这并不是JWT的真正缺陷 缓解这一

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

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

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

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

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

重要编辑

最后,回答标题中的问题,“JWT有多安全?”:这取决于您如何存储令牌。本地存储不如使用cookies()安全,但cookies可能会受到攻击


这个答案曾经说JWT比Cookie更安全,因为Cookie受到CSRF攻击。但是在本地存储中存储JWT也不安全。因此,我不再将JWT存储在本地存储中,也不再使用众所周知的技术来抵御CSRF攻击。

您还可以锁定客户端IP或网络和用户代理。这有助于防止会话窃取(但在客户端使用漫游、isp代理或运营商级NAT和chanhing IPs时也可能会带来问题),您现在将JWT存储在哪里?您使用的技术是什么?@AndreFigueiredo您可以使用会话存储而不是本地存储storage@user18853本地存储也可以防止CSRF。唯一的区别是数据可用的时间有多长。在现实世界中,发布敏感数据的时间更短。从安全角度来看,这没有什么区别,因为用户可能会一直打开选项卡。这取决于服务器使用令牌的方式。JWS本身只是一个属性包,可以安全地使用,也可以不安全地使用。但是,它不会带来任何新的保护。请注意,在JWT的某些(大多数?)实现中,使用令牌-因此需要缩短到期时间