与包变换加密和复制混淆

时间:2018-05-09 08:19:48

标签: encryption couchdb pouchdb

我的目标是确保远程沙发数据库中的所有数据都将被加密。当我从pouch-transform文档中跟踪此示例时,我的数据在同步后未在远程端点上加密,

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

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

2 个答案:

答案 0 :(得分:1)

  

是不是要在远程数据库中加密数据的加密点?

没有。正如package description

中所述
  

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

换句话说,它只会修改静止的数据。

此插件对发送到CouchDB /从CouchDB发送的数据完全没有影响 - 仅限于数据存储在PouchDB内部的方式。

如果您想在CouchDB中加密文档,则需要在应用程序层执行此操作。也就是说,自己加密数据,并将其存储在文档中或作为加密形式的附件存储。

答案 1 :(得分:0)

我也有问题。因此,我添加了一个replicating标志以在复制时通过包装的函数:https://github.com/pouchdb/pouchdb/pull/7774

并修改了pouch-transform功能,以将选项传递给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;
  },
};