是否可以使用CouchDB的过滤复制仅复制ACL到用户的数据子集?

时间:2012-05-21 19:46:22

标签: security couchdb offline pouchdb

特别是,可以使用PouchDB进行过滤复制吗?我想确保客户端不能省略过滤器,从而与整个数据库同步。

1 个答案:

答案 0 :(得分:5)

没有CouchDB复制“协议”。复制过程只是一个连接到两个CouchDB端点的客户端,从一个端点读取文档,然后将它们写入另一个端点。当然,CouchDB内置了这样一个客户端(“复制器”);但从概念上讲,它是第三方应用程序。

这意味着,您可以从应用程序的安全分析中删除复制。首先考虑正常的Web客户端读取和写入您的服务器。锁定它。您可以假设一个假想的对手使用被黑客入侵的Web浏览器,或使用自定义HTTP客户端(例如,它不尊重跨源策略)。

解决了这个问题后,复制必然会遵循您的安全策略。

换句话说,在PouchDB和CouchDB之间复制:

  • 如果您推送到远程服务器,则您的安全工具是远程validate_doc_update功能。
  • 如果您从远程服务器,则您的安全工具是数据库_security对象 - 特别是"members"数组。客户端可以完全读取数据库,也可以根本不读取数据库。当然,您可以在服务器端对特殊用途的数据库进行过滤复制。