我的JWT应该是HTTPOnly吗?我目前正在创建它们:
const token = jwt.sign(user, config.secret, {
expiresIn: 604800 // 1 week
});
new Cookies(req,res).set('access_token',token,{
httpOnly: false,
secure: false // for your production environment
});
使用通用cookie让它们像这样:
const cookies = new Cookies();
var token = cookies.get('access_token');
这样安全吗?如果没有,或者有其他原因不这样做,我应该怎么做?如果JWT cookie仅为http,那么get请求将返回undefined。
谢谢,Ed。
答案 0 :(得分:1)
JWT规范指出:
JSON Web令牌(JWT)是一种紧凑的声明表示格式 适用于空间受限的环境,例如HTTP授权 标头和URI查询参数。
因此,它声明打算用于HTTP授权标头和URI查询参数。您可以将其用作Cookie,因为规范并未禁止它。我可以想象用JWT令牌作为cookie(特别是HttpOnly)合理的用例。现在,使它成为HttpOnly的问题取决于以下内容:
如果您不需要从客户端代码访问它,或者有公开令牌的影响,则将其设为HttpOnly。