Путаница с шифрованием и репликацией в пакетном преобразовании - PullRequest
0 голосов
/ 09 мая 2018

Моя цель состоит в том, чтобы гарантировать, что все данные на удаленном диване базы данных будут зашифрованы. Когда я следую этому примеру из документов pouch-transform, мои данные не шифруются в удаленной конечной точке после синхронизации,

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

когда я шифрую в исходящем, это происходит, но в этом случае мои данные также шифруются локально. Что я делаю здесь неправильно, не является ли смысл шифрования для шифрования данных в удаленной базе данных? Таким образом, единственный способ достичь этого - создать упаковщики set / get и зашифровать их? Можно ли каким-то образом определить место назначения документа при исходящем звонке?

Ответы [ 2 ]

0 голосов
/ 27 мая 2019

У меня тоже проблема. Поэтому я добавил флаг 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;
  },
};

0 голосов
/ 09 мая 2018

не является ли смысл шифрования для шифрования данных в удаленной базе данных?

Нет. Как указано в описании пакета :

Применение функции преобразования к документам до и после их сохранения в базе данных.

Другими словами, он только изменяет данные в покое.

Этот плагин точно не влияет на данные, отправляемые в / из CouchDB - только в том случае, если данные хранятся в самой PouchDB.

Если вы также хотите зашифровать документы в CouchDB, вам нужно сделать это на уровне приложений. То есть зашифруйте данные самостоятельно и сохраните их в документе или в виде вложения в зашифрованном виде.

...