È possibile utilizzare la replica filtrata di Couchdb per replicare solo il sottoinsieme dei dati previsti da un utente?
Domanda
In particolare, la replica filtrata può essere eseguita con il pouchdb?Voglio assicurarmi che il client non possa omettere il filtro e quindi sincronizzare contro l'intero database.
Soluzione
Non c'è nessun protocollo di replicazione di couchdb ". Il processo di replica è semplicemente un client che si collega a due endpoint di couchdb, leggendo i documenti da uno, e scrivendoli nell'altro. Naturalmente, CouchDB è dotato di un cliente del genere ("The Replicator") Built-in; Ma concettualmente è un'applicazione di terze parti.
Cosa significa che è possibile rimuovere la replica dall'analisi della sicurezza dell'applicazione. Prima considera i normali client web lettura e la scrittura del tuo server. Blocca quello giù. Potresti assumere un avversario ipotetico con un browser web hacked o utilizzando un client HTTP personalizzato (che non rispetta le politiche di origine cross-origin per esempio).
Con quel problema risolto, la replica sarà necessariamente, seguire la tua politica di sicurezza.
In altre parole, replicare tra POUCHDB e CouchDB:
- .
- Se siete spingendo al server remoto, il tuo strumento di sicurezza è la funzione
validate_doc_update
remota. - Se sei tirando dal server remoto, il tuo strumento di sicurezza è il database _security oggetto - in particolare gli array
"members"
. Un client può leggere completamente un database o per niente. Naturalmente, è possibile effettuare repliche filtrate in database di uso speciale sul lato server.