为客户(浏览器)访问确保文档风格的数据库(MongoDB,Couchdb,Ravendb)

StackOverflow https://stackoverflow.com/questions/3091956

支持HTTP访问的REST风格JSON的文档数据库似乎是支持Ajax-rich应用程序的理想选择,浏览器正在直接调用数据库,绕过传统的Web服务器 /应用程序逻辑组件。一个例子可能是一旦对用户进行身份验证,则可以检索用户的首选项。 (BBC主页可能是一个很好的例子,在负载下崩溃之前!)

这种情况的问题是安全问题 - 如果使用Web服务器(例如基本表单身份验证)对用户进行身份验证,则此身份如何转移到文档DB中。无论如何,是通过Web服务器向DB的所有请求的唯一答案 - 即保护文档DB,以便没有直接的外部访问?

这似乎是最有道理的,并且是最容易实施的,但是我想知道外面有人在异质环境中使用文档DBS是否有经验和 /或建议?

有帮助吗?

解决方案

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

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

您可以使用 validate_doc_update 在设计文档中功能限制文档创建/更新。例如,您可以编写验证,该验证将文档更新给其作者以外的任何人。

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

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

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

有关更多详细信息,请检查 CouchdB Wiki上的安全概述, , 这 放松书的安全章节 还有这个 简短的屏幕截图.

其他提示

好吧,我只有CouchDB的经验,但希望我能帮助您。

CouchDB具有内置验证过程,您可以在JavaScript中编写验证规则,并可以访问当前用户所在的组。这一切都是由CouchDB本身处理的,您不必关心如何登录信息。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top