Wie kann ich Daten während der Replikation filtern und dem Benutzer nur seine eigenen Dokumente geben?

8

Ich muss die Serverdaten von CouchDB und PouchDB auf der Client-Seite synchronisieren. Jeder Benutzer hat seine eigenen Daten. Wenn er online ist, werden diese Daten aktualisiert. Wie kann ich Daten während der Replikation filtern und dem Benutzer nur seine eigenen Dokumente geben? Dies ist ein Sicherheitsproblem für mich.

    
Oleh Herych 27.05.2014, 11:26
quelle

2 Antworten

4

Gegenwärtig ist es die beste Vorgehensweise, um private Benutzerdaten in PouchDB / CouchDB zu erstellen, um jedem Benutzer auf der Serverseite eine eigene Datenbank zu geben. Ich habe einige Anweisungen hier für wie man das macht.

    
nlawson 27.05.2014, 15:40
quelle
7

Eine separate Datenbank für jeden Benutzer ist in Ordnung, bis Sie viele Benutzer (Tausende) haben, weil jeder Benutzer eine eigene Datei für seine Datenbank im Dateisystem haben muss. Dies führt nach meiner Erfahrung zu Problemen mit Ressourcen auf Betriebssystemebene und macht CouchDB instabil. Die Probleme werden noch schlimmer, wenn Sie Sharding durchführen und BigCouch verwenden möchten, da beim Sharding mehrere Dateikopien erstellt werden.

Eine Alternative ist das CouchBase-Sync-Gateway ( Ссылка ). Es verwendet dieselbe CouchDB-API, die Sie jedoch verwenden müssen Couchbase als serverseitige DB statt CouchDB dafür.

Eine weitere Alternative ist die Verwendung von CouchDB zusammen mit gefilterter Replikation und verschiedenen DB-Benutzern für jeden Benutzer. Dies ist möglicherweise nicht genug, da Sie bei gefilterter Replikation nicht verhindern können, dass jemand direkt auf die Datenbank zugreift. Sie müssten dies also mit einer Reverse-Proxy-Lösung wie HAProxy koppeln, um sicherzustellen, dass jeder Benutzer nur auf seine eigenen gefilterten Daten zugreifen kann.

    
joscas 28.05.2014 15:50
quelle

Tags und Links