javascript - mongodb 注入(inject)的可能性

标签 javascript node.js mongodb security

我是 mongodb 新手,我在服务器端( Node js)使用此查询,

collection.find({},function(e,crimes){
    collection.col.aggregate([{$match: req.body},
      {$group: { _id: "$district",  count: {$sum: 1}}}
    ],function(e,docs){
        console.log(docs);
        res.render('postResults', {
            "output" : docs
        });
   });
});

collection.col.aggregate([{$match: req.body}) 行中,我直接使用 req.body 注入(inject)从客户端发送的对象。

我想知道这种方法是否会导致sql注入(inject)等安全漏洞。如果是,该漏洞有多严重?攻击者是否可以用它进行只读以外的操作?

提前谢谢您..

最佳答案

是的,您可以通过更改 req.body 来注入(inject)不同的查询。例如,如果您正在查找特定犯罪,您的 req.body 可能类似于 { "_id": "123456"}。但我可以发送 { }。然后每个文档都会匹配,并且聚合管道将处理每个文档,这可能足以导致性能问题。由于聚合管道永远不会更改原始文档,因此您无法更改数据,因此这是一种只读攻击,但它仍然可以用于通过收集扫描和大容量聚合管道来阻塞您的服务器。

关于javascript - mongodb 注入(inject)的可能性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27736061/

相关文章:

javascript - 检测调查猴子 iframe 的变化

javascript - MongoDB 聚合 $lookup $match

mongodb - 在 Mongo 上进行大数据查询的最佳方式是什么?

node.js - 使用 Node.js 和 MongoDB 的警报系统

javascript - 迭代对象内的数组,console.log 工作,但我无法让它返回 react 元素。

javascript - 如何将Lambda函数中的Mongo Atlas数据库与Mongoose连接

node.js - NodeJS 脚本出错后,不会再次启动。 AWS Lambda

javascript - gulp-sourcemaps,未捕获的语法错误 : Unexpected token :

javascript - 如何在 Javascript 中对数组对象使用 forEach 方法或任何数组方法?

javascript - 有没有办法像在 asp 或 jsp 中使用 <%%> 标签一样使用 &lt;script&gt; 标签?