[英]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.