É possível usar a replicação filtrada do CouchDB para replicar apenas o subconjunto de dados ACLed para um usuário?

StackOverflow https://stackoverflow.com//questions/10691605

Pergunta

Em particular, a replicação filtrada pode ser feita com o PouchDB?Quero ter certeza de que o cliente não pode omitir o filtro e, assim, sincronizar com todo o banco de dados.

Foi útil?

Solução

Não há replicação do CouchDB "Protocolo". O processo de replicação é simplesmente um cliente que se conecta a dois pontos de extremidade do CouchDB, lendo documentos de um e escrevendo -os no outro.É claro que o CouchDB vem com esse cliente ("o replicador") integrado;mas conceitualmente é um aplicativo de terceiros.

Isso significa que você pode remover a replicação da análise de segurança do seu aplicativo.Primeiro considere clientes web normais lendo e gravando em seu servidor.Bloqueie isso.Você pode assumir um adversário hipotético com um navegador hackeado ou usando um cliente HTTP personalizado (que não respeita políticas de origem cruzada, por exemplo).

Com esse problema resolvido, a replicação seguirá, por necessidade, sua política de segurança.

Em outras palavras, replicando entre o PouchDB e o CouchDB:

  • Se você estiver empurrando para o servidor remoto, sua ferramenta de segurança é o servidor remoto validate_doc_update função.
  • Se você estiver puxar do servidor remoto, sua ferramenta de segurança é o objeto _security do banco de dados - especificamente o "members" matrizes.Um cliente pode ler um banco de dados inteiramente ou não ler nada.Claro, você pode fazer replicações filtradas em bancos de dados de uso especial no lado do servidor.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top