node.js - JSON Web token (JWT) 安全性

标签 node.js express jwt

我正在使用 Node.js、MySQL 和 JSON Web token 来构建 API。

我的 JWT 看起来像这样:

eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJyb2xlcyI6WyJsb2dnZWRfaW4iLCJhZG1pbiJdLCJpZCI6NzEsImlhdCI6MTQ1OTQ0NjU5MCwiZXhwIjoxNDU5NTMyOTkwfQ.BBbdyFMztYkXlhcBjW6D5SsKxtaRiZJqiNShOroQmhk

及其声明解码为:

{"roles":["logged_in","admin"],"id":71,"iat":1459446590,"exp":1459532990}

当 API 端点收到该 JWT 时,调用 ID 为 71 的用户表以获取任何相关详细信息或使用 JWT 中的 ID 是否更安全?

理想情况下,我们会节省对 User 表的大量调用,但是会存在安全威胁吗?恶意用户在调用端点之前是否无法更改该 ID 或角色?

最佳答案

JWT 已签名。如果用户更改有效负载上的任何内容,签名验证将失败,您将知道数据已被篡改。

话虽如此,数据本身并未加密。您可以使用用户 ID,但不要添加除可能公开的信息之外的敏感信息。

有关 JWT 验证和生命周期的更多信息:

https://github.com/auth0/node-jsonwebtoken#jwtverifytoken-secretorpublickey-options-callback

关于node.js - JSON Web token (JWT) 安全性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36340450/

相关文章:

javascript - 在 Node 中对 module.exports 使用包装匿名函数是不好的做法吗?

node.js - 将数据推送到客户端 - 只能连接一个客户端?

javascript - 无法在 Node.js 的 ES6 中定义的类中调用方法

node.js - 在 react js 中使用 jwt decode 解码 token 是否安全?

php - 刷新 token AWS Cognito 用户池

javascript - 使用函数生成器将值返回到 GraphQL Mutation 中的输出字段

javascript - Mapnik 无法确定图像类型

node.js - 将对象映射到 Mongoose 模型

javascript - 无法弄清楚如何访问 js 文件

node.js - 带有 Passport 的 Sails.js 中的 JWT