我正在研究 NoSql 注入,所以我试图用邮递员破解我的数据库,看看是否有任何漏洞。我的请求使用参数来查询字段:
User.find({
// name: req.params.name
name: req.query.name
},
function (err, result) {
if (err) {
console.log('Mongoose findUsers name error: ', err);
res.status(505).send({ error: "Internal error." });
return;
}
if (result != null) {
console.log("Mongoose findUsers name: ", result);
res.status(200).send({
message: "Found users :",
data: result
});
} else {
console.log("Mongoose findUsers name: No user found");
res.status(404).send({
message: "No user found."
});
}
});
所以我试图将名称参数作为{"$ne": null}
or传递{"$gt": ""}
,所以查询将是localhost:5000/api/users?name={"$ne": null}
. 虽然我从该findOne
方法得到的响应不为空,但它会返回一个空数组。这是否意味着我已经受到 NoSql 注入的保护并且不需要清理查询参数,或者我只是没有使用正确的值来执行注入?如果可以进行 nosql 注入,我还可以运行哪些其他测试来尝试正确检查?一如既往地感谢您的帮助。干杯。