我应该消毒用户创建的字符串输入到MongoDB之前(使用c#驱动程序)

本文关键字:之前 MongoDB 使用 驱动程序 输入 用户 创建 字符串 我应该 | 更新日期: 2023-09-27 17:54:47

使用MongoCollection<ThingWithString> collection,我应该警惕调用collection.Insert(stringythingy)吗?如果一个用户给定的字段在ThingWithString是,例如";db.dropDatabase();,我设置自己一些痛苦的线?

我应该消毒用户创建的字符串输入到MongoDB之前(使用c#驱动程序)

简短的回答:no,由于您提到的原因,没有必要在进入MongoDB时对用户输入进行消毒。MongoDB中没有等同的"SQL注入",因为它的二进制传输格式(BSON)。

BSON文档中的任何字符串都不能被错误地解释为代码(例如";db.dropDatabase();),除非你真的很努力-例如,如果你构建自己的字符串表示你想要运行的代码并将其传递给db.eval(),你可能永远都不应该这样做。

只要你使用驱动程序的本地方法与Mongo通信,你在请求中包含的任何数据将在发送到服务器之前由驱动程序映射到有效的BSON文档-这是驱动程序的责任。

但是,您可以决定在用户输入进入Mongo用于其他目的时对其进行消毒(例如对其进行html编码),但这完全取决于您。就我个人而言,我会在离开的时候这样做,而不是在进来的时候,因为各种原因超出了这个问题的范围。