我使用流星,我很擔心可能的安全漏洞。我只希望用戶能夠創建修改數據庫中的某些字段。在這個例子中,我希望他們能夠創建或更新的唯一內容是一個派對的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)。 –