簡體   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