繁体   English   中英

如何保护 express.js 中的敏感路由

[英]How to protect sensitive routes in express.js

所以我正在构建一个运行 express js 的节点 js 应用程序,我在 app.js 中设置了这样的路由:

router.get("/db/:dbName", (req, res) => {
            var dbName = req.params.dbName
            if (dbName) {
                var coll = db.collection(dbName);
                coll.find().toArray()
                    .then(results => {
                        res.send(results);
                    })
                    .catch(err => {
                        console.error(err)
                    })
            } else {
                console.log("put a dbName")
            }

        })

所做的是单击一个按钮,它从 mongodb 数据库中读取并输出“dbName”集合中的文档。 然后我想到了 go 到一个单独的选项卡并输入“localhost:3000/db/collection”,当然它仍然可以在没有按钮的情况下工作(即它返回集合中的所有文档)。 我的问题是,有什么方法可以防止这种行为,基本上只有在您使用按钮时才使路线可访问。

您可以使用中间件并查找仅通过单击按钮传递的值。 如果该值未传递给服务器,您可以检查它并相应地采取措施


function middleware(req, res, next) {
 if(req.value) {
   next()  
 } else {
   return "Some error"
 }
}

app.route('/route', middleware, function(req, res) {})

如需进一步检查https://expressjs.com/en/guide/using-middleware.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM