【发布时间】:2016-04-27 09:51:28
【问题描述】:
我刚刚注意到Meteor.call,阻止用户调用集合的插入、更新、删除方法的概念,仍然可以从 JavaScript 控制台调用。
以客户为例:
// client
...
Meteor.call('insertProduct', productInfo);
...
这是服务器部分:
// server
Meteor.methods({
insertProduct: function( productInfo ){
Product.insert(...);
}
})
好的,我知道人们不能直接从他们的 JavaScript 控制台调用 Product.insert()。
但如果他们再多尝试一点,他们会从开发者工具的资源选项卡中发现客户端的 JavaScript 中有 Meteor.call()。
所以现在他们可以尝试从控制台调用Meteor.call,然后尝试猜测productInfo 的属性应该是什么。
所以我想知道我们如何才能防止这种最终活动?
Meteor.call 是否做得足够好?
还是我遗漏了一些重要的东西?
【问题讨论】:
-
没有什么,nothing,一个 JavaScript 程序可以做你无法在控制台中复制的事情。 什么都没有。唯一要做的就是在服务器端进行密封验证,这样只有您希望通过的事情才能通过。
-
另外,如果 Amadan 的评论还不清楚,是的,用户可以从控制台调用
Product.insert()。因此,您需要确保在服务器上设置了正确的允许/拒绝规则(并已删除insecure包)。 -
这没有错。 Web 上的每个应用程序都有某种
Meter.call,通常它只是对某个 URL 的 ajax 调用,因此您可以打开控制台并进行 ajax 调用,没关系。只是不要相信客户。
标签: javascript meteor meteor-methods