PHP和HTML中的MongoDB注入

PHP和HTML中的MongoDB注入,php,codeigniter,mongodb,code-injection,Php,Codeigniter,Mongodb,Code Injection,我正在考虑将MongoDB与CodeIgniter一起使用,但是我关心的是如何将数据插入数据库,大多数示例都将post值直接放入一个集合中,这是一个梦想,因为它删除了提取步骤。。。然而,用户可以很容易地将值注入/覆盖到数据库中,与在数据库中映射一个字段的SQL相比,似乎没有示例说明如何避免这种类型的数据注入 我可能会看到两个问题,即注入的附加值和包含不正确数据类型的字段,即:包含数组或对象的名称 是构建模型类以将我的POST数据与数据类型一起映射到的解决方案,还是有更简单的方法 例如: Code

我正在考虑将MongoDB与CodeIgniter一起使用,但是我关心的是如何将数据插入数据库,大多数示例都将post值直接放入一个集合中,这是一个梦想,因为它删除了提取步骤。。。然而,用户可以很容易地将值注入/覆盖到数据库中,与在数据库中映射一个字段的SQL相比,似乎没有示例说明如何避免这种类型的数据注入

我可能会看到两个问题,即注入的附加值和包含不正确数据类型的字段,即:包含数组或对象的名称

是构建模型类以将我的POST数据与数据类型一起映射到的解决方案,还是有更简单的方法

例如:

CodeIgniter具有完整的活动记录功能,可帮助您处理数据的验证和卫生:


但是,你也可以使用类似原则2:解决这个问题,它有一个完全适合的MongoDB版本。

环顾四周,我想唯一的解决方案是将它映射到本地数组或模型类。 例如: 更像是:

$post = $this->input->post();
$document = array( "title" => (string)$post['title'], "online" => (bool)$post['online']);
$collection->insert($document);

每个人都怎么想?

是的,但两个库都不知道应该使用什么数据结构。@在CodeIgniter中,它们只有表单验证:但这是一样的,你会为每个表单创建一个模型并在那里进行验证。我知道表单验证-无论如何都会使用它。。。但是,它没有做的是适应通过post注入的数据类型和其他字段。@on_u; CI是否基于表单验证压缩数据类型和字段?只有十进制和数字检查,因为SQL数据库会丢弃错误的数据类型,现在使用NoSQL,一些数据将是数组或对象,我们希望确保它是该数据类型。。。正如您所见,我们正在努力转向这种文档类型,认为将值转换为预期类型是一种很好的方法。当使用类似的方法时,模型类和属性将映射到MongoDB的类型,但在setter方法中进行强制转换仍然是最佳实践。使用ODM的附加好处是处理相关文档(嵌入或引用),但如果您的文档大多是平面的,那么上面的示例很简单,并且省去了ODM的开销。