【问题标题】:Is it safe give to applications direct access to CouchDB through the REST Api?通过 REST Api 让应用程序直接访问 CouchDB 是否安全?
【发布时间】:2012-08-06 22:38:23
【问题描述】:

我观看了 DEFCON,它完全专注于 NoSQL,尤其是 CouchDB。 他们观察到一些攻击向量,例如访问客户端库(伪 SQL 透明层)、访问 db 和暴力密钥。(以无模式方式)、json/视图注入。 如果我直接从 Internet 访问 db,并在 db 验证、身份验证中使用。这样会不会降低我的数据库的安全性?

很遗憾,由于缺乏使用 CouchDB 的经验,因此无法进行准确的分析,亲爱的同事,请相信您的意见。

谢谢。

【问题讨论】:

    标签: database-design nosql couchdb security database-security


    【解决方案1】:

    不,我不会这样做。

    我认为 CouchDB 的安全性不够精细,不足以使其适合发布在 Internet 上。没有办法让“一些”数据通过,而不是全部。在普通的 SQL DB 上,您可以限制某些表等。但不能在 Couch 中。作为无模式和文档存储,文档就是文档就是文档,无论它是“秘密”还是“重要”。

    这是一个很好的后端,但不是在狂野的互联网上。

    【讨论】:

    • 授权结合数据验证是否不够安全?
    • 我的意思是,根据我的经验,并非数据库中的所有内容都是为公众消费而设计的。而对于 Couch,如果您可以访问其中的任何一个,那么您就可以访问所有这些。
    【解决方案2】:

    直接访问任何基于 Web 的数据库会带来麻烦,但我想这取决于您的设计...

    使用 CouchDB,您可以选择为每个用户提供自己的数据库,这样可以缓解某些问题。您还可以更改“直接”CouchDB 用户的读/写权限。

    这两种技术的详细解释可以在这里找到: CouchDB Authorization on a Per-Database Basis

    【讨论】:

      【解决方案3】:

      在我看来,任何人都可以直接在前端使用 couchDB,而无需设计中间后端服务。我想强调你至少需要做的事情。虽然我不是专家,但也应该三思而后行。

      • 在 couchdb 中为具有所需角色的应用程序的每个用户创建用户。
      • 当然,您应该只将此用户作为成员添加到数据库,这样他们就无法修改包含验证数据的设计文档。
      • 在我的场景中,我希望用户只能访问他/她自己的文档。为此,我们有validation documents,以便我可以检查内置_users 数据库中用户的文档是否具有他/她被授权的documentId。如果是这样,他可以写入文档或修改它。当然,他只能修改现有的,我可以通过比较文档的_id来验证,必须和以前一样。

      所以,我想,如果用户只能读写自己的文档,那是安全的。但是,您必须自己在数据库中创建这样的用户,或者使用安全的 API 来使用管理员密码来修改设计文档并添加到 _users 数据库中。另一个想法是创建一个管理仪表板来接受用户创建请求。您当然可以为自己创建一个管理员用户,并且每当有人创建帐户时,您只需点击允许,即可使用您在 couchDB 中创建的管理员用户在 _users 数据库中进行一些更改。

      【讨论】:

        猜你喜欢
        • 2016-12-30
        • 1970-01-01
        • 2013-02-07
        • 2023-04-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-04-22
        相关资源
        最近更新 更多