【发布时间】:2016-02-03 21:33:01
【问题描述】:
现在我已经阅读了这个Secure node.js restful API 但我需要更多细节。
目标 从客户端(js,angular,ejs)调用一个api到服务器(node.js),但足够安全,不能仅仅篡改发送的键:值。
情况
我为特定的 uri 和 return res.json(); 创建了一个 app.post({});。现在问题来了,
控制器接受一个参数说 id。现在 id = 1 是 Apple,id = 2 是 Microsoft。
我分别返回 Apple 和 Microsoft,但我不希望访问者(匿名)可以将 id 更改为 2 并获取 MIcrosoft 的数据。
- 此时访问者是匿名的,对于非匿名用户,我使用会话。
- 如果我保留盐或生成哈希,那么算法将通过源代码可见。
- 如果我使用 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 是这里的主要内容 你会怎么处理呢?
【问题讨论】:
-
你不能。不可能。用户有权将他们想要的任何数据包扔到您的服务器上。由您在服务器端执行授权。
-
那你有什么建议?考虑到 id 是主要元素我应该以加密形式使用 id 并在服务器上解密它吗?或者别的什么
标签: javascript angularjs node.js security ejs