Meteor阻止从控制台调用方法

时间:2016-02-06 12:10:16

标签: meteor methods console

我有一个头或尾的流星游戏,可以将用户的统计数据保存在他们的个人资料中。统计数据,例如。使用诸如incrementWins和incrementLoses等Meteor方法来改变胜利和失败。

有没有办法阻止用户在控制台上调用这些方法?

2 个答案:

答案 0 :(得分:1)

我没有找到问题的准确答案,所以我会添加一个。

  

有没有办法阻止用户在控制台上调用这些方法?

简短的回答是

只要客户端上有Meteor变量,就无法限制用户使用浏览器控制台。 Meteor允许客户端在任何条件下使用Meteor.call功能,因此即使您以某种方式限制其使用,它也会影响整个应用程序,而不仅仅是浏览器控制台。

但是,您可以使您的方法更安全。如您所知,您可以在客户端,服务器端或两者上运行代码。如果你把你的方法放在服务器端,那么客户端将永远不会知道在执行方法时究竟发生了什么,也无论如何也无法影响它或拦截控制。

另一方面,如果将方法放在lib /或两个/文件夹(或简称应用程序的根文件夹)中,方法将在客户端和服务器上运行。代码的不安全部分(如批量删除集合项或操纵Meteor.users集合)不会在客户端执行。但是,你可能想要在浏览器控制台上放置一些会改变UI状态或显示任何消息的东西。在应用此练习之前请三思。

我个人认为你夸大了在浏览器控制台上运行某些东西的能力的含义。首先,只有一小部分用户实际上这样做(但如果他们这样做,期望您的应用程序中的最小漏洞被利用)。其次,Meteor在这部分得到了很好的保护,它不允许用户运行不安全的代码(除非添加了insecure包,默认情况下你创建一个新的应用程序)。第三,大多数情况下,随着您的方法执行,数据将被反应更新,这就是Meteor开箱即用的,所以您不必担心在应用状态更改后刷新UI等等。

答案 1 :(得分:0)

每个新创建的Meteor项目都默认添加了不安全的包。这是允许我们从客户端编辑数据库的包。它在原型设计时非常有用,要删除此软件包,请转到您的app目录并运行:

meteor remove insecure