有没有办法在 Doctrine ODM MongoDB 查询期间绑定参数?
$path = $this->objectManager->getRepository("MyBundle:MyDocument")
->findOneBy(array("slug" => new MongoRegex("/^slug/")))
;
这将不必在上面出现 slug 的地方进行字符串连接。
有没有办法在 Doctrine ODM MongoDB 查询期间绑定参数?
$path = $this->objectManager->getRepository("MyBundle:MyDocument")
->findOneBy(array("slug" => new MongoRegex("/^slug/")))
;
这将不必在上面出现 slug 的地方进行字符串连接。
简而言之,您通常不必担心与SQL 注入相同类别的字符串注入问题,因为发送到 MongoDB 服务器的请求是对象格式 ( BSON ),而不是像 SQL 这样的字符串格式。
典型的 SQL 注入攻击涉及操纵将连接到 SQL 查询字符串中的变量。SQL 绑定参数是通过转义和/或类型检查限制可接受值的变量的占位符。在 BSON 格式中,查询的各个方面以对象格式保存,该格式将值的范围限制为该字段。
如果您正在为服务器端 JavaScript执行(例如在$where
查询中)传递值,则在过滤用户提供的输入时必须小心谨慎。通常不鼓励使用服务器端 JavaScript,因为它可能会对性能产生一些不利影响。
有关更多信息,请参阅 MongoDB wiki 页面我是否必须担心 SQL 注入。当然,MongoDB 中实际上没有 SQL 支持,所以这个页面更恰当地命名为“我应该担心参数注入攻击”;-)。