12

从总体上看,似乎 Meteor 应用程序的源代码由于“编写一个 Javascript 文件,同时在客户端和服务器上运行”主题而对客户端开放。

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

因为它的服务器端代码是对公众开放的,所以有邪恶目的的人在应用程序中发现安全漏洞不是很容易吗?

例如,在 Meteor 0.5.0 的party app 的新示例中,model.js 文件似乎也被发送到客户端。

我在这里误解了什么吗?

编辑

这是我不明白的部分。

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

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

我真的不明白。如果每个模型实现(包括数据库交互)都发送给客户端,应用程序会不会更不安全并且容易被其他开发人员复制?

4

2 回答 2

9

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

编辑

关于第二部分:

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

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

如果有你不想在客户端运行的“秘密”模型代码,你当然可以有第二个server/models.js文件。

于 2012-10-18T02:31:47.713 回答
1

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

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

于 2012-12-14T01:21:48.920 回答