【问题标题】:Can local documents be disabled in CouchDB?可以在 CouchDB 中禁用本地文档吗?
【发布时间】:2013-04-18 13:26:34
【问题描述】:

本地文档与普通 CouchDB 文档的不同之处在于它们不被复制,不显示在任何视图中(包括 _all_docs),并且不受验证功能的约束。它们只能使用它们的文档 ID 来访问,该文档 ID 必须是已知的以进行检索。详情请见http://docs.couchdb.org/en/1.3.x/api/local.html

恶意用户可以在面向公众的 CouchDB 中滥用此功能在服务器上存储任意数据。有趣的是,数据库或服务器管理员甚至无法通过查看日志文件以外的任何其他方式查看这些文档。

所以我想知道是否有任何选项可以禁用 CouchDB 中的本地文档?

【问题讨论】:

    标签: security couchdb administration


    【解决方案1】:

    不,没有办法做到这一点,抱歉。不过,您的 cmets 都是正确的,这可能是在 CouchDB 中改进以避免此问题的好方法。随时在https://issues.apache.org/jira/browse/COUCHDB 提交错误,人们肯定会考虑它,或者解释为什么它不实用。

    另一方面,更实际地,授予某人对您的数据库的写访问权限需要一定程度的信任,即他们不会恶意或存在严重缺陷。是的,他们可以偷偷地创建本地文档,但同样地,他们也可以删除数据库中的所有内容,或者用其他普通文档填充它并使服务器崩溃,然后您仍然必须通过并单独删除(甚至是批量delete 要求您列出每个文档 ID),或者只删除整个数据库。

    如果您的数据库客户端在此级别上不值得信赖,那么您不应该让他们直接访问您的数据库。在这种情况下,您应该在它们和管理这些交互的 CouchDB(即具有固定表单等的网站)之间放置一些服务来控制这类事情。

    【讨论】:

    • 事实上(有点)有这样一张票:issues.apache.org/jira/browse/COUCHDB-1145。如果你想让它向前发展,我会大声评论(虽然我不知道有多少关注),通过电子邮件发送 CouchDB 邮件列表,看看你是否可以说服任何人尽快修复它,或者如果你自己修复它你感觉特别热心:-)。
    • 感谢您的明确回答和票证链接!由于我缺少 erlang 技能,我担心自己修复它会失败;)我同意授予用户对数据库的写访问权限需要一定程度的信任。但是,我至少可以控制他使用 validate_doc_update 发布的文档的结构。这不是本地文件的情况!
    猜你喜欢
    • 2011-05-24
    • 1970-01-01
    • 1970-01-01
    • 2014-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多