我使用流星,我很担心可能的安全漏洞。我只希望用户能够创建修改数据库中的某些字段。在这个例子中,我希望他们能够创建或更新的唯一内容是一个派对的name
和description
字段。如何只允许某些文档字段在Meteor中插入和更新?
Parties.allow({
insert: function (userId, party) {
return userId && party.owner === userId;
},
update: function (userId, party, fields, modifier) {
return userId && party.owner === userId;
},
});
这是我在角流星教程看到的代码,但它看起来像有人可以添加使用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;
}
要INSERT命令我可以用用Object.keys(party)
作为可接受的字段列表同样的功能做到这一点。
我无法想象我是第一个想到这件事的人;必须有一个处理这个问题的标准方法。
或者,你可以考虑[使用方法]( https://stackoverflow.com/questions/27330321/meteor-method-vs-deny-allow-rules)。 –