在前端构造mongodb查询不是一个好主意吗?

在前端,在下面进行字符串化

{ options: { $or: [ id1,id2,id3 ],foo: { $gte: bar} } }

在后端

直接在SomeCol.Find(req.params.options)

中使用

当然可以进行验证/消毒

修改

我打算将哪些用户可以在后端查询白名单

// pseudo validator schema
{
  $or: isArrayOf({ _id: MongoId }),foo: isObject({
    $gte: isnumber()
  })
}

如果来自前端的查询不符合该架构,它将在此处停止。 而且由于我总是为find()运行GET Method(所以不插入),所以我认为这样做很方便。

还是粗略的?

xieyanbanma 回答:在前端构造mongodb查询不是一个好主意吗?

是的,绝对可以。您不希望您的客户能够对您的集合运行任何查询。这将打开Pandora的盒子,使您的数据面临极大的风险。

您需要尽可能地封装实现细节,以帮助确保系统的安全性和可扩展性。

所有进入系统的数据都必须经过仔细检查和验证,以避免注入攻击。

本文链接:https://www.f2er.com/3088977.html

大家都在问