【发布时间】:2013-04-01 19:05:48
【问题描述】:
我在玩 node.js、express 和 mongoose。
为了立即启动和运行,我将 Express 查询字符串对象直接传递给 mongoose 查找函数。我很好奇的是,这种做法在实时应用程序中会有多危险。我知道 RDBMS 极易受到 SQL 注入的攻击。除了“清理输入”的好建议之外,这段代码有多邪恶:
app.get('/query', function (req, res) {
models.findDocs(req.query, function (err, docs) {
res.send(docs);
});
});
意味着对http://localhost:8080/query?name=ahsteele&status=a 的get 请求只会将以下内容推入findDocs 函数:
{
name: 'ahsteele',
status: 'a'
}
这感觉很恶心有很多原因,但它有多不安全?将查询参数传递给 mongodb 的最佳实践是什么? express 是否提供任何开箱即用的消毒?
【问题讨论】:
-
听说过操作员注射吗?从而有人可以在 url 中形成一个查询,该查询可以从数据中收集数据,就像 bobby 表示例一样?
-
一旦您接受仍然需要执行的清理,我还要补充一点,您认为如果不使用索引等,查询可能会导致您的系统出现大量不必要的抖动。
标签: node.js express mongoose node.js mongodb express mongoose security