【发布时间】:2019-06-19 10:29:07
【问题描述】:
我的 Web 应用程序的安全性确实存在很大问题。 我在用户登录我的应用程序时实现了 JWT 令牌(REST API 返回令牌)。
在我的 jwt 令牌中,我只有用户 ID。问题是,当我想登录 ID = 1 的用户时,
我可以使用相同的令牌查看并执行所有其他用户的休息操作。例如:
当我查看 userId = 1 时,我执行 GET 操作:/api/users/1 并且我有关于用户 1 的信息。但我可以执行操作 /api/users/2、3 等。
一个令牌。如何保护它?
const jwt = require('jsonwebtoken');
const env = require('../config/env.config.js');
module.exports = (req, res, next) => {
try {
const token = req.headers.authorization.split(' ')[1];
const decoded = jwt.verify(token, env.SECRET_KEY);
req.userData = decoded;
next();
} catch (error) {
return res.status(401).json({
message: 'Auth failed',
});
}
};
【问题讨论】:
-
确保在这些 API 端点中执行操作的用户是被更新的同一用户?
-
您的应用程序必须强制执行您的授权规则。响应用户信息请求的代码必须检查会话并验证代理用户是否有权查看请求的信息。
-
@zack6849,我编辑了我的帖子。此错误存在于所有休息操作中(发布、获取、放置等...)
-
那么编辑在调用这些 REST 端点时运行的代码以执行我所说的操作?
-
@zack6849 我添加了我的 checkAuth 中间件
标签: javascript node.js rest jwt