【发布时间】:2015-08-28 03:25:42
【问题描述】:
我正在使用 Meteor,我担心可能存在安全漏洞。我只希望用户能够创建修改数据库中的某些字段。对于此示例,我希望他们能够创建或更新的唯一内容是聚会的 name 和 description 字段。
Parties.allow({
insert: function (userId, party) {
return userId && party.owner === userId;
},
update: function (userId, party, fields, modifier) {
return userId && party.owner === userId;
},
});
这是我在 Angular Meteor 教程中看到的代码,但看起来有人可以使用 Minimongo 在浏览器的控制台中添加他们想要的任何字段。有没有一种方法可以轻松定义正确的字段,并拒绝所有不使用这些字段的插入和更新?我可以编写一个简单的函数来进行更新:
function ensureFieldsAreOk(acceptableFields,fieldsInQuestion){
for(i = 0; i < fieldsInQuestion.length; ++i){
if(acceptableFields.indexOf(fieldsInQuestion[i]) === -1){
console.log("Hacking attempt detected");
return false;
}
}
return true;
}
要为插入命令执行此操作,我可以使用相同的函数,使用 Object.keys(party) 作为可接受的字段列表。
我无法想象我是第一个想到这个的人;必须有一个标准的方法来处理这个问题。
【问题讨论】:
-
或者,您可以考虑使用using a method。
标签: javascript mongodb security meteor