[英]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的數據。
我希望我對我的問題足夠清楚,將等待答案。
一個示例代碼
...
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.