gpt4 book ai didi

javascript - 如何在 Meteor 中只允许插入和更新某些文档字段?

转载 作者:可可西里 更新时间:2023-11-01 09:35:44 25 4
gpt4 key购买 nike

我正在使用 Meteor,我担心可能存在安全漏洞。我只希望用户能够创建修改数据库中的某些字段。对于此示例,我希望他们能够创建或更新的唯一内容是派对的 namedescription 字段。

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) 作为可接受的字段列表。

我无法想象我是第一个想到这个的人;必须有一个标准的方法来处理这个问题。

最佳答案

要限制与集合关联的字段,您可以使用 https://atmospherejs.com/aldeed/simple-schemahttps://atmospherejs.com/aldeed/collection2

您可以定义字段、字段类型、默认值和许多其他选项。

至于确保用户只能更新特定字段,您可以在更新允许/拒绝规则中使用 fieldNames 属性进行检查:

update: function (userId, doc, fieldNames, modifier) { 
// check fieldNames here.
}

关于javascript - 如何在 Meteor 中只允许插入和更新某些文档字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32262866/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com