MeteorJS 应用安全

MeteorJS App Security

我对以下结构的安全性反馈有点好奇:

Meteor 服务器端应用程序(当然使用 Mongo) Meteor Mobile App,我知道这个有一个迷你-Mongo

根据我阅读的教程,本地 mini-Mongo 保存移动应用程序所需的数据,而在有网络连接时会调用与服务器上的父 mongo 同步.

我是否有责任在代码层面上限制在客户端 mini-Mongo 中保存的内容?示例:

这可能有答案:How do I create a meteor topic that is for server-only security sensitive information (client cannot subscribe)?

MiniMongo 基本上存储它从某些 消息中获取的数据 DDP(Meteor 的数据协议)。通常,数据不会缓存在本地,而是在每次页面重新加载时重新创建,假设我们正在谈论在 WebView 中呈现的混合移动应用程序。

您可以查看使用 Meteor DevTools for Chrome 传递的消息。

这些消息 (added/changed/removed) 通常通过 pub/sub 系统发送。确实 您有责任决定 发送什么。您可以完全控制系统中的建模角色和权限,以及谁在您的发布中获得什么,因为发布是由服务器上的函数调用启动的。

一个常见的模式是:

Meteor.publish('someProtectedPblication', function(/*...*/) {
  if (this.userId && someCondition(this.userId) { // check for permission
    return SomeCollection.find(someData, someFields); // return a cursor that gets synced with the user
  }
  return this.ready(); // the user is not authorized to view the data
});

管理员创建用户 时,我假设这是通过 Meteor 方法调用完成的,即 RPC。没有理由让客户端的管理员可以使用该用户的数据(更不用说他们的散列密码),或者存储在他的缓存数据库集合中,除非您明确地将其发布给他(我没有看到有理由去做,永远)。

除了乐观 UI 呈现,因为我认为使用 allow/deny 规则来确保安全性较低且更容易出错,并且我使用 Meteor 方法进行任何突变。