JavaScript 在整个API中使用服务器端标头的安全吗

JavaScript 在整个API中使用服务器端标头的安全吗

问题描述

在下面的verifyToken函数中,我检查令牌是否有效,提取令牌中的ID并将其分配给一个新的req.user标头。

我有两个问题:

  1. 这个服务器端添加的标头可以被Postman或自定义代码伪造吗?
  2. 在NodeJS代码中使用这个req.user.id值来验证数据的所有权,在能够编辑/删除信息之前是否安全?例如,为了编辑用户配置文件,我会检查req.user.id标头是否与数据库中的用户配置文件ID相同,然后允许编辑。这样安全吗?

以下是函数:

const verifyToken = (req, res, next) => {
const authHeader = req.headers.token;

try {
if (authHeader) {
  const token = authHeader.split(" ")[1];
  jwt.verify(token, process.env.JWT_SEC, (err, user) => {
    if (err) {
      res.status(403).json("Token is not valid!");
      console.log(`validation failed for token ({token}):{err}`);
    } else {
       console.log("user validated");
      req.user = user;
      next();
    }
  });
}
 } catch (err) {
return res.status(401).json("You are not authenticated!");
}
 };

解决方案

  1. 客户端上运行的Postman和自定义代码无法访问服务器的秘钥 process.env.JWT_SEC .

  2. req.user.id 是常见且合理的做法。

当JWT令牌被准确验证,并且您的授权逻辑健壮时,通常是安全的。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程