就注入问题而言,就像SQL一样,风险明显更低……尽管理论上可以通过未知的攻击媒介来实现。
数据结构和协议是二进制的,并且由API驱动,而不是利用特定于域的语言中的转义值。基本上,您不能只是诱使解析器在末尾添加“;
db.dropCollection()”。
如果仅用于查询,则可能很好…但是我仍然提醒您使用一点验证:
- 确保仅字母数字字符(过滤或使null无效以及您通常不接受的其他任何字符)
- 强制每个术语使用最大长度(例如255个字符)
- 强制执行整个查询的最大长度
- 删除以“ $”开头的 特殊 参数名称,例如“ $ where”&这样
- 不允许嵌套数组/文档/哈希…仅字符串和整数
另外,请记住,空查询将返回所有内容。您可能想要限制该返回值。:)



