6

支持 REST 样式 JSON over HTTP 访问的文档数据库似乎非常适合支持富含 AJAX 的应用程序,其中浏览器直接调用数据库,绕过传统的 Web 服务器/应用程序逻辑组件。这方面的一个示例可能是在用户通过身份验证后检索用户首选项。(在负载崩溃之前,BBC 主页可能就是一个很好的例子!)

这种情况的问题是安全问题——如果用户使用 Web 服务器进行身份验证(例如基本表单身份验证),该身份如何传递到文档 DB。无论如何都是通过Web服务器代理所有请求到数据库的唯一答案 - 即保护文档数据库以便没有直接的外部访问?

这似乎是最有意义的,也是最容易实现的,但我想知道那里是否有人对在异构环境中使用文档数据库有经验和/或建议?

4

2 回答 2

1

好吧,我只有 CouchDB 的经验,但还是希望能帮到你。

CouchDB 有一个内置的验证过程,你用 javascript 编写你的验证规则,并且可以访问当前用户所在的组。基本上这一切都由 CouchDB 自己处理,您不必关心如何获取登录信息。

于 2010-06-24T15:08:49.937 回答
1

这可能在您提到的每个数据库中都不同。以下是它在 CouchDB 中的工作方式。

CouchDB 允许您管理用户和角色。

您可以validate_doc_update在设计文档中使用该功能来限制文档创建/更新。例如,您可以编写一个拒绝对除作者以外的任何人进行文档更新的验证。

要限制谁可以从数据库中读取文档,您可以编辑/db_name/_security文档并列出用户或角色。

但是,我不认为您可以使读取访问更加精细(即允许用户仅读取他们创建的文档)。

为此,您必须将 CouchDB 放在代理后面,并使用视图将文档提供给经过身份验证的用户。您仍然可以通过这种方式使用 CouchDB 用户管理。代理只是隐藏了对数据库的直接访问。

有关更多详细信息,请查看CouchDB wiki 上的安全概述、Relax 书籍的安全章节和这个简短的截屏视频

于 2010-07-15T10:37:15.647 回答