我是 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/