首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >保护Node.JS API

保护Node.JS API
EN

Stack Overflow用户
提问于 2016-02-03 21:33:01
回答 2查看 45关注 0票数 0

现在我已经读过这个Secure node.js restful API,但是我需要更多的细节。

Objective从客户端(js、角形、ejs)调用到服务器(node.js),但安全到不能仅仅篡改发送的键:值。

我为特定的uri和创建了一个app.post({});。现在问题是,

控制器接受一个param say。现在id =1是Apple,id =2是Microsoft。

我分别返回Apple和Microsoft,但我不希望访问者(匿名)只需将id更改为2并获取微软的数据。

  1. 此时访问者是匿名的,对于非anon用户,我使用会话。
  2. 如果我保留salt或生成哈希,则该算法将通过源代码可见。
  3. 如果我使用AUTH,那么凭据将是可见的。

我希望我对我的问题足够清楚,将等待答案。

示例代码

代码语言:javascript
复制
...
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.这里最主要的事情是你会怎么对待它?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-02-03 21:46:16

您无法控制服务器之外发生的事情。用户可以完全控制他们在请求中输入的内容。

我分别返回Apple和Microsoft,但我不希望访问者(匿名)只需将id更改为2并获取微软的数据。

然后,在允许他们访问Microsoft的数据之前,您需要执行身份验证和授权检查。

此时访问者是匿名的,对于非anon用户,我使用会话。

如果您有匿名访问者,则需要在服务器上检查是否允许将所请求的内容提供给匿名用户。如果不是,您需要拒绝该请求,因为这是未经授权的。

如果我保留salt或生成哈希,则该算法将通过源代码可见。

这并不重要,因为只有授权用户才能将密码输入到哈希算法中。无论如何,这不应该相关,您应该使用HTTPS来保护客户端和服务器之间的数据,并使用加密散列来保护数据,以便存储在用户数据库中。

如果我使用AUTH,那么凭据将是可见的。

只对您和凭证所属的授权用户(假设您使用HTTPS,您应该这样做)。

票数 1
EN

Stack Overflow用户

发布于 2016-02-03 21:36:02

虽然第一项和第二项取决于你的架构,但我不知道你为什么不把第一项数据和其他一些空间区分开来,而不是在同一个空间中使用所有数据。

到目前为止,这个解决方案看起来相当简单,在数据库中使用UDID而不是整数ID(后端)。

如果您可以通过API共享您所拥有的代码和要提供的数据的示例,这将使我们能够更详细地了解它。

谢谢。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35188159

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档