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

spi*_*tus 13 mongodb node.js

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

Tim*_*Tim 8

如果您将数据存储为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/


efk*_*kan 5

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

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

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

let a = "{$gt:25}"
console.log(a)
console.log(escape(a))
Run Code Online (Sandbox Code Playgroud)