使用MongoDB db.find()和Express 4.0 req.params的安全性

时间:2015-11-17 03:03:50

标签: node.js mongodb express mongoose

通过传递db.find()对象,使用req.params方法构建MongoDb查询是否安全?

有安全问题吗?

示例:

app.get('/trip/:id', function(req, res) {
    Trip.find(req.params, function(err, user) {
        if(err) return err;
        return res.json({ user);
    });
});

假设params对象确实包含id值,它将如下所示:

{ id: '564a8e0cdc41d7736c70df0a' }

MongoDb在执行此操作时是否存在任何安全问题?

1 个答案:

答案 0 :(得分:0)

数据库查询安全问题与您为查询提供的自由度以及查询返回的信息量有关。如果您按ID查找项目,请按ID检查,如果您正在通过其他密钥查找,请使用该密钥进行检查。

这不仅限于mongodb,而是应用所有相同的,只是确保你的lint响应,不要丢弃多余的信息。根据我的经验,mongodb不会比其他数据库更有可能查询滥用行为。

我希望通过您提供的代码,我无法转到/users/:id并获取整个文档。