Mongoose 模型 Thing 有两个字段,其中只有一个(安全)可以通过mass assignment设置:
var db = require('mongoose');
var schema = new db.Schema({
safe: { type: String }, // settable through mass assignment
unsafe: { type: String } // not settable through mass assignment
});
db.model('Thing', schema);
控制器通过传递参数来设置事物:
exports.create = function(req, res) {
var thing = new Thing(req.body);
// more...
};
攻击者可以通过发出设置了 unsafe 的 JSON POST 请求来尝试设置 thing.unsafe。应该防止这种情况。
如果 Mongoose 可以使用 Rails attr_accessible 之类的功能,那就太好了。我确实找到了mongoose-mass-assign,但这与我正在寻找的完全不同。一方面,mongoose-mass-assign 显然需要使用新的 API(两个 massAssign 函数)。我希望对传递参数哈希的任何本机 Mongoose 模型函数进行批量分配保护,例如,Thing 构造函数和 Thing.create 函数。
如何获得 Mongoose 模型的批量分配保护?如果不可用,Mongoose 用户目前如何防范此漏洞?