HTTP仅适用于JWT?

时间:2017-06-14 19:25:13

标签: reactjs cookies jwt jsx

我的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。

1 个答案:

答案 0 :(得分:1)

JWT规范指出:

  

JSON Web令牌(JWT)是一种紧凑的声明表示格式   适用于空间受限的环境,例如HTTP授权   标头和URI查询参数。

因此,它声明打算用于HTTP授权标头和URI查询参数。您可以将其用作Cookie,因为规范并未禁止它。我可以想象用JWT令牌作为cookie(特别是HttpOnly)合理的用例。现在,使它成为HttpOnly的问题取决于以下内容:

  1. 是否需要从客户端代码(JavaScript)访问它?
  2. 将令牌泄露给潜在攻击者是否有影响?

如果您不需要从客户端代码访问它,或者有公开令牌的影响,则将其设为HttpOnly。