Ben*_*Ben 14 mongoose mongodb node.js
除了这个相当无意义的答案和另一个不受欢迎的答案,我似乎找不到任何有关使用Mongoose消毒用户输入的资源.
这里有关于Node/MongoDB注入的博客文章在服务器级别看起来很好,但中间件级别(即Mongoose)必须有一些可以清理输入并确保数据库合理安全的东西.
有这样的野兽,还是甚至是必要的?
Pet*_*ons 17
似乎mongo-sanitize npm模块是启动原始转义功能的地方.老实说,这听起来更适合于连接/表达中间件层,因为在mongoose层,根据设计,代码不会对查询/更新参数是否由应用程序开发人员编写表达任何期望(在这种情况下,他们不得消毒或不能正常运作)或涉及用户输入(必须消毒).因此,我建议中间件功能进行消毒用户输入进入最常见的地方:req.body,req.query,和req.params.例如,您可能会执行类似(草图)的操作:
var json = require("body-parser").json;
var sanitize = require("mongo-sanitize");
function cleanBody(req, res, next) {
req.body = sanitize(req.body);
next();
}
function updateUser(req, res) {
//...
// safe to build an update query involving req.body here
}
app.put("/api/users", json(), cleanBody, updateUser);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7600 次 |
| 最近记录: |