繁体   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