【发布时间】:2014-05-23 05:36:32
【问题描述】:
我正在为查询 MongoDB 数据库的服务构建 REST API。最初,我采用提供“/user/1”的标准路线来搜索用户 id 1 等。随着我深入到项目中,其他开发人员开始询问我们是否可以添加布尔搜索功能,例如能够做到“和”、“非”和“或”。考虑到为此创建 DSL 所需的工作量,我考虑让 REST API 接受一个 MongoDB 查询 JSON 对象,就像这样(假设这是通过 POST 传递的):
/query/{"$or": [{"user": "1", "user", "2"}]}
现在,在将该查询传递给 MongoDB 之前,我将执行以下操作:
- 验证 JSON 对象
- 确保该字符串仅用于
query函数,而不是update、runcommand或aggregation - 验证查询中没有
$where子句since that allows script execution
这样做是否足以防止注射?阅读 MongoDB FAQ,似乎将 JSON 传递给查询操作是无害的,因为您无法使用它运行任何 javascript($where 除外)。这是一种安全的方法吗?
【问题讨论】:
-
看来您正在采取一种我希望在我的休息端点上实施的方法我对此有一个问题。 stackoverflow.com/questions/25555956/… 如果您能分享有关可能方法的任何信息,将不胜感激。干杯
-
您可能想了解 Firebase 如何通过 REST 公开 JSON 文档查询以获得灵感,这是一个开始:firebase.google.com/docs/database/rest/retrieve-data?hl=de
标签: mongodb