Meteor 客户端数据库请求的安全性如何?

Posted

技术标签:

【中文标题】Meteor 客户端数据库请求的安全性如何?【英文标题】:How secure are Meteor client side DB requests? 【发布时间】:2017-02-10 02:24:50 【问题描述】:

让我们想象 3 台机器:

客户 流星服务器 MongoDB 服务器

如果我从客户端执行 mongodb 请求,它将连接到 Meteor,还是直接连接到 mongodb?谢谢。

【问题讨论】:

【参考方案1】:

在客户端 Meteor 中,meteor 运行 MiniMongo,一个 mongoDB 的 js API 实现。

如docs所写

在客户端,没有直接连接MongoDB数据库, 事实上,它的同步 API 是不可能的(也不可能是什么 你要)。相反,在客户端,集合是客户端缓存 的数据库。这要归功于 Minimongo 库——一个 内存中,所有 JS,MongoDB API 的实现。

对于写请求——客户端保存反映在 MiniMongo 中的数据,然后与 Meteor 服务器通信。根据允许/拒绝规则,数据可能被写入 MongoDB 服务器或被拒绝。 (假设,insecure 包被移除)

简而言之,Client(MiniMOngo)和Meteor Server通过DDP进行通信,Meteor Server和MongoDB通过NodeJS MongoDB Driver进行通信。来自客户端的所有通信都转到服务器,并且根据定义的规则可能/可能不会写入 MongoDB DB。

Meteor 客户端 DB 请求的安全性如何? 答案是“视情况而定”。根据 Meteor docs 的说法,不建议依赖允许/拒绝规则来保证安全。总是首选通过here讨论的方法来做到这一点

一些资源:Allow/Deny Rules in MeteorCollections in MeteorRead about MiniMongo Here

【讨论】:

以上是关于Meteor 客户端数据库请求的安全性如何?的主要内容,如果未能解决你的问题,请参考以下文章

在 Meteor 运行时,如何从另一个客户端访问 Meteor 的 MongoDB?

Meteor 中的安全方法

Meteor 中的安全方法

在 Meteor 中如何有条件地向客户端发送数据?

Meteor + React:服务器端路由?

您如何在 Meteor 中存储特定于客户端的数据服务器端?