在插入MongoDB之前是否需要清理用户输入(MongoDB + Node js combo)

时间:2015-06-01 23:54:33

标签: node.js mongodb

我使用MongoDB和NodeJS,我想知道在插入/更新数据库文档之前是否需要清理数据。我很难找到明确的答案,我想知道是否有任何Node模块可以很好地完成它,或者我需要删除所有出现在字符串中的$或者根本不需要担心这一点。我知道PHP有漏洞,但我使用Node / Mongo(本机驱动程序)组合,但仍不确定是否需要清理用户输入。

2 个答案:

答案 0 :(得分:7)

如果您将数据存储为String并且您没有解析它以执行Mongo命令,那么没有什么可担心的。

关于安全的好文章

http://cr.yp.to/qmail/guarantee.html

当您检索用户输入并解析该输入以执行Mongo命令时,会出现唯一的问题,此处您需要注意清理输入,否则您将受到攻击。

有一个npm包为你做

https://www.npmjs.com/package/mongo-sanitize

关于这个的好文章

https://thecodebarbarian.wordpress.com/2014/09/04/defending-against-query-selector-injection-attacks/

答案 1 :(得分:3)

是的,你这样做。 有关更多信息,请查看此信息; https://www.npmjs.com/package/content-filter

也可以使用本机escape()方法来保护数据库。

运行下面的代码段以查看结果。

let a = "{$gt:25}"
console.log(a)
console.log(escape(a))