【问题标题】:Confusion with pouch-transform encryption and replication与袋变换加密和复制混淆
【发布时间】:2018-10-19 07:02:13
【问题描述】:

我的目标是确保远程沙发数据库中的所有数据都将被加密。当我按照 pouch-transform 文档中的这个示例进行操作时,同步后我的数据在远程端点上没有加密,

pouch.transform({
      incoming: function (doc) {
        encrypt(doc);
      },
      outgoing: function (doc) {
        decrypt(doc);
      }
    });

当我在传出时加密它,但在这种情况下,我的数据也在本地加密。我在这里做错了什么,加密的目的不是在远程数据库中加密数据吗?那么实现这一点的唯一方法是创建 set/get 包装器并在其中加密?我可以在拨出电话中以某种方式检测文档目的地吗?

【问题讨论】:

    标签: encryption couchdb pouchdb


    【解决方案1】:

    加密的目的不是在远程数据库中加密数据吗?

    没有。如package description 中所述:

    在文档存储到数据库之前和之后对文档应用转换函数。

    换句话说,它只修改静态数据。

    这个插件对从 CouchDB 发送/从 CouchDB 发送的数据完全没有影响——仅影响数据在 PouchDB 本身中的存储方式。

    如果您也想在 CouchDB 中加密文档,则需要在应用层执行此操作。即自己对数据进行加密,并以加密形式存储在文档中或作为附件。

    【讨论】:

    • 非常感谢
    【解决方案2】:

    我也有这个问题。我不想在复制时转换数据,所以我侵入并添加了一个replicating 标志以在复制时通过包装函数:https://github.com/pouchdb/pouchdb/pull/7774

    并修改pouch-transform pacakge 以将选项传递给outcoming 回调:

    {
      // decrypt it here.
      outgoing: async (doc, args: IPouchDBWrapperArgs, type: TransformPouchType) => {
        const {options} = args;
        if (!options.replicating) {
          doc = await this.decryptDoc(doc, options);
        }
        return doc;
      },
    };
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-10-13
      • 2011-09-09
      • 2014-08-23
      • 2019-09-16
      • 1970-01-01
      • 2016-11-21
      • 1970-01-01
      相关资源
      最近更新 更多