Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.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头中的alg参数吗?_Security_Rsa_Jwt - Fatal编程技术网

Security 我们应该总是忽略JWT头中的alg参数吗?

Security 我们应该总是忽略JWT头中的alg参数吗?,security,rsa,jwt,Security,Rsa,Jwt,在本文中,作者描述了一个场景,黑客利用以下事实构造有效的JWT令牌:为了验证签名,验证器必须首先查看头。如果我们总是将RSA与公钥-私钥对一起使用,这是否完全避免了这种黑客行为发生的可能性 这里有一句话: 不幸的是,攻击者可以滥用此功能。如果服务器期望使用RSA签名的令牌,但实际上收到了使用HMAC签名的令牌,那么它会认为公钥实际上是HMAC密钥 我假设此语句意味着,如果标头中的alg键表示令牌正在使用HMAC,则检查令牌的代码将切换到HMAC。因此,如果我们总是使用RSA,从不使用HMAC,因

在本文中,作者描述了一个场景,黑客利用以下事实构造有效的JWT令牌:为了验证签名,验证器必须首先查看头。如果我们总是将RSA与公钥-私钥对一起使用,这是否完全避免了这种黑客行为发生的可能性

这里有一句话:

不幸的是,攻击者可以滥用此功能。如果服务器期望使用RSA签名的令牌,但实际上收到了使用HMAC签名的令牌,那么它会认为公钥实际上是HMAC密钥

我假设此语句意味着,如果标头中的
alg
键表示令牌正在使用HMAC,则检查令牌的代码将切换到HMAC。因此,如果我们总是使用RSA,从不使用HMAC,因此从不检查报头,我们只需使用公钥验证令牌,如果验证失败,我们拒绝访问,这能解决这个问题吗


这种方法会带来任何其他安全问题吗?

是的,只要您知道预期的算法是什么,并且您使用的是最新更新的库,您就应该是好的。如果您可以访问该站点,您会发现他们也会强调此漏洞,并且对于受影响的LIB,他们提到了要使用的最低版本,该版本解决了问题,即Algo验证没有通过

    verify(string token, string algorithm, string verificationKey)

这就是我所理解的。

正如文章所说,只要你不根据标题中的内容选择算法,那么你就应该是安全的。太好了-我更新了主题以更准确地反映主题。根据文章,一些弱类型语言(php、js)中的某些库存在漏洞。用一个公钥验证JWT,好像它是一个HMAC,我认为它比一个广泛的漏洞更具体。我不认为应该完全忽略头验证,因为有有用的信息,比如可以安全推断的哈希算法(例如RS256 vs RS512)