2014-02-18 19 views
0

我對web開發和Node.js/Express很新。我有一個Express服務器。在我的客戶端中,我發送了一個GET請求,用於DB中的一些數據。 GET請求是由阻止用戶訪問Express中的子域

app.get('/pathname', controller.getsomedata);

問題的處理,現在用戶可以鍵入在瀏覽器的URL domainname.com/pathname並獲得定向到該路徑。如果他們添加某個查詢domainname/pathnamequery,他們能夠從數據庫中檢索數據(這應該會發生),但是我更希望GET請求/ pathname只發生在客戶端代碼中,而不是當用戶在瀏覽器中輸入時。

有沒有更好的方式來做我的GET請求?或者有沒有辦法限制用戶訪問/路徑名。

對於新手問題,我表示歉意,但我不知道如何把它寫得足夠​​好,以便Google解決方案。謝謝!

回答

1

這是不可能的。如果您的客戶端代碼能夠訪問某些內容,惡意用戶也可以這樣做。

你可以通過使用自定義的HTTP頭或類似的東西來緩解這個問題,但最好是驗證服務器端的所有數據。

0

允許整個客戶端請求作爲數據庫查詢可能導致安全問題。所以一定要驗證查詢參數並將它們用作數據庫查詢條件。 如果你想從HTTP查詢參數中免費查詢DB,你應該在路由上加上認證/授權。

app.get('/pathname', function(req, res, next) { 
    if (confirmThisRequestIsFromMe(req)) { 
     next(); 
    } else { 
     res.send(401); 
    } 
}, controller.getsomedata);