在写项目时,使用到了express-jwt
第三方模块,代码如下,
expressJWT({ secret:key.secretKey})
然后就报了如下错误,
查阅了npm官网后,才知道最新版本的使用不仅要使用参数secret
,还需要参数algorithms
。当提供第三方库作为机密时,需要使用algorithms
算法参数来防止潜在的降级攻击。
注意:不要混合使用对称算法和非对称算法(即HS256/RS256):混合使用算法而没有进一步验证可能会导致降级漏洞。
jwt({
secret: 'shhhhhhared-secret',
algorithms: ['HS256']
//algorithms: ['RS256']
})
所以修正后的代码应该是
expressJWT({ secret:key.secretKey, algorithms: ['HS256'] })