Meteor的源代码向客户开放?

时间:2012-10-18 01:03:12

标签: meteor

从一般的一瞥看来,由于“写一个Javascript文件,一次在客户端和服务器上运行”主题,Meteor app的源代码似乎对客户开放。

如果特定应用程序的服务器端源代码向客户端开放,那么随机人员复制它们并创建非常相似的应用程序会不容易?

对于有恶意目的的人来说,在应用程序中找到安全漏洞并不容易,因为它的服务器端代码对公众开放了吗?

例如,在Meteor 0.5.0的派对app new example中,model.js文件似乎也被发送到客户端。

我在这里误解了什么吗?

修改

这是我不理解的部分。

根据http://docs.meteor.com/#structuringyourapp

  

客户端和服务器子目录之外的文件都加载在客户端和服务器上!这是模型定义和其他功能的地方

我真的不明白。如果将每个模型实现(包括数据库交互)发送到客户端,那么应用程序的安全性是否会降低,并且很容易被其他开发人员复制?

2 个答案:

答案 0 :(得分:9)

server/文件夹中的任何代码都不会发送到客户端(请参阅http://docs.meteor.com/#structuringyourapp

修改

关于第二部分:

不在client/server/中的任何代码都是您希望在客户端和服务器端运行的代码。所以很明显它必须发送给客户。

您将模型代码放在那里的原因是因为延迟补偿。如果您想对数据进行更新,最好立即在客户端进行更新,然后运行相同的代码服务器端以实现“提交”它。有很多例子可以说是有意义的。

如果存在您不希望在客户端运行的“秘密”型号代码,您当然可以拥有第二个server/models.js文件。

答案 1 :(得分:1)

保护客户端 - 服务器应用程序的最佳方法是在服务器上编写显式安全检查,而不是从客户端隐藏数据库更新逻辑。

有关安全模型的更长说明,请参阅https://stackoverflow.com/a/13334986/791538