gpt4 book ai didi

javascript - 安全性大问题(JWT Node JS),一个 token 用于所有访问

转载 作者:行者123 更新时间:2023-12-01 01:19:26 25 4
gpt4 key购买 nike

我的网络应用程序的安全性存在很大的问题。当用户登录我的应用程序时,我实现了 JWT token (REST API 返回 token )。

在我的 jwt token 中,我只有 userID。问题是,当我想登录 ID = 1 的用户时,

我可以使用相同的 token 查看并执行所有其他用户的其余操作。例如:

当我搜索 userId = 1 时,我执行 GET 操作:/api/users/1 并且我有关于用户 1 的信息。但我可以执行操作/api/users/2、3 等。

全部用一个 token 。如何保护它?

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',
});
}
};

最佳答案

我认为最好的解决方案是创建中间件来检查发件人的 ID 并将其附加到路由,类似于以下内容

const middleware = (req, res, next) => {
const id = req.params.id || req.body.id || req.query.id
if (req.userData.id === id) {
next()
} else {
res.status(403).send({message: "forbidden"})
}
}
router.get("/api/users/:id", middleware, (req, res) => {
// do your staff
res.send({message: "ok"})
})
router.put("/api/users/:id", middleware, (req, res) => {
// do your staff
res.send({message: "ok"})
})

关于javascript - 安全性大问题(JWT Node JS),一个 token 用于所有访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54367792/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com