[英]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) {})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.