Node.js Json Web令牌安全性[Node JS]

Node.js Json Web令牌安全性[Node JS],node.js,express,security,mongoose,jwt,Node.js,Express,Security,Mongoose,Jwt,这篇文章只是想知道我的方法/代码是否不会带来任何开销,是否足够安全使用的技术:NodeJS、JWT、ExpressJS、mongoose(mongoDB) 以下是userschema: const userSchema = mongoose.Schema({ email: { type: String, required: true }, password: { type: String, required: true }, accessToken: {

这篇文章只是想知道我的方法/代码是否不会带来任何开销,是否足够安全<代码>使用的技术:NodeJS、JWT、ExpressJS、mongoose(mongoDB)

以下是userschema:

const userSchema = mongoose.Schema({
email: {
    type: String,
    required: true
},
password: {
    type: String,
    required: true
},
accessToken: {
    type: String
}
});
现在,我的代码实现了以下功能:

  • 每次用户登录到他的帐户时,生成的accesstoken(JWT)都会保存到用户帐户(在数据库中)。每当请求需要身份验证时,例如:
    GET/api/user/myprofile
    JWT发送以及
    授权
    头中的此请求将与已保存在DB中的令牌一起进行检查(如我前面提到的),因此没有其他人可以访问旧的有效JWT访问用户帐户。除此之外,经过身份验证的路由还具有一个中间件功能,用于验证JWT,这是必不可少的

  • /logout
    端点也执行相同的检查。如果授权标头中的令牌(JWT)与用户数据库中的令牌(JWT)不同,则会抛出403错误,因此具有有效令牌的攻击者无法连续注销用户

这是否足以提供令牌管理方面的安全性?有没有我遗漏的强制性内容


谢谢。

我相信你的申请已经。。。有一点改进的潜力。看:

  • 您不应该将JWT令牌存储在数据库中。如果可以信任JWT令牌,则应该验证JWT令牌的签名以进行验证
  • 通过将所有令牌存储在数据库中,您将有一个单点故障。一旦数据库被黑客攻击,每个人都会被黑客攻击
  • 注销端点不需要身份验证或令牌。是否希望将具有无效令牌的用户重定向到登录页面,以便他可以注销
  • 请阅读如何使用JWT代币:

    一旦你这样做了,看看关于JWT令牌最常见的安全问题是什么: