簡體   English   中英

安全性大問題(JWT NodeJS),所有訪問權限都使用一個令牌

[英]Big problem with security (JWT NodeJS), one token for all acces

我的Web應用程序的安全性確實有很大的問題。 當用戶登錄到我的應用程序時,我實現了JWT令牌(REST API返回令牌)。

在我的jwt令牌中,我只有userID。 問題是,當我想登錄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',
    });
  }
};

我認為最好的解決方案是創建一個中間件,該中間件檢查發送方的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"}) }) 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM