簡體   English   中英

保護Node.JS API

[英]Securing Node.JS APIs

現在,我已經閱讀了這個安全的node.js restful API,但是我需要更多細節。

目的從客戶端(js,angular,ejs)到服務器(node.js)調用一種api,但要足夠安全,以至於不能僅僅篡改key:values值。

情況我創建了一個app.post({}); 對於特定的uri並return res.json(); 現在這是問題所在

控制器采用一個參數說id。 現在id = 1是Apple,id = 2是Microsoft。

我分別返回Apple和Microsoft,但我不希望訪客(匿名)可以將id更改為2並獲取MIcrosoft的數據。

  1. 此時,訪問者是匿名的,對於非匿名用戶,我使用會話。
  2. 如果我堅持不懈或生成哈希,那么該算法將通過源代碼可見。
  3. 如果我使用AUTH,則憑據將可見。

我希望我對我的問題足夠清楚,將等待答案。

一個示例代碼

...
exports.statement = function(req, res){
  dcn_db.pool.getConnection(function(err, connection){
    if(!req.body.opid){
      return res.sendStatus(400);
    }
    var opid = req.body.opid;
    var con = req.body.con;
    connection.query(data_model.mini_statement(req),[opid,con], function(err, rows, fields) {
      if(err)   {
        console.log('Error while performing Query. ' + err); //error respose
        return res.json({ error : "true"})
        }else{
          return res.json({ error : "false", data : rows}); //parse result to json instantly
        }
    });
    connection.release();
  });
};
...

上面的代碼接受opid和con .... opid是這里的主要內容,您將如何處理呢?

您無法控制服務器外部發生的事情。 用戶可以完全控制他們在請求中的內容。

我分別返回Apple和Microsoft,但我不希望訪客(匿名)可以將id更改為2並獲取MIcrosoft的數據。

然后,您需要執行身份驗證和授權檢查,然后才能允許他們訪問Microsoft的數據。

此時,訪問者是匿名的,對於非匿名用戶,我使用會話。

如果您有匿名訪問者,則需要在服務器上檢查是否允許請求的內容提供給匿名用戶。 如果不是,您需要拒絕未經授權的請求。

如果我堅持不懈或生成哈希,那么該算法將通過源代碼可見。

沒關系,因為只有授權用戶才應該具有密碼才能放入哈希算法。 無論如何這都不重要,您應該使用HTTPS來保護客戶端和服務器之間的數據,並使用加密哈希來保護數據以存儲在用戶數據庫中。

如果我使用AUTH,則憑據將可見。

僅適用於您和憑據所屬的授權用戶(假設您使用HTTPS,應該這樣做)。

盡管第一項和第二項取決於您的體系結構,但我不知道為什么您不將auth數據與在同一空間中使用所有其他空間區分開來。

到目前為止,針對此問題的解決方案相當簡單,請在數據庫(后端)中使用UDID而不是整數ID。

如果您可以共享自己的示例代碼,並嘗試通過API服務的數據,那么我們將對此進行詳細說明。

謝謝。

暫無
暫無

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

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