2012-05-21 25 views

Odpowiedz

5

Nie ma "protokołu" replikacji CouchDB. Proces replikacji to po prostu klient łączący się z dwoma punktami końcowymi CouchDB, odczytywanie dokumentów z jednego i zapisywanie ich w drugim. Oczywiście CouchDB ma wbudowanego takiego klienta ("replikator"); ale koncepcyjnie jest to aplikacja innej firmy.

Oznacza to, że możesz usunąć replikację z analizy bezpieczeństwa swojej aplikacji. Najpierw należy wziąć pod uwagę normalne czytanie i zapisywanie przez klientów sieci Web na serwerze. Zablokuj to. Możesz założyć hipotetycznego przeciwnika za pomocą zhakowanej przeglądarki internetowej lub używając niestandardowego klienta HTTP (który nie respektuje na przykład zasad dotyczących pochodzenia).

Po rozwiązaniu tego problemu replikacja będzie, z konieczności, przestrzegać zasad bezpieczeństwa.

Innymi słowy, replikację między PouchDB i CouchDB:

  • Jeśli jesteś popychanie do zdalnego serwera, narzędzie bezpieczeństwa jest funkcja zdalnego validate_doc_update.
  • Jeśli jesteś ciągnąc ze zdalnego serwera, twoje narzędzie bezpieczeństwa jest bazą obiektu _security - w szczególności tablicami "members". Klient może albo całkowicie odczytać bazę danych, albo wcale. Oczywiście można wykonać filtrowane replikacje w specjalnych bazach danych po stronie serwera.
+0

To było moje założenie, że nie wystawiałbyś bezpośrednio CouchDB (tak jakbyś nie wystawiał bezpośrednio MySQL lub jakiegokolwiek innego magazynu danych), a raczej implementował jakiś rodzaj końcowego punktu końcowego. Ale jestem trochę zdezorientowany, kiedy mówisz, że nie ma "protokołu" CouchDB? Rozumiem, co masz na myśli, działając jako klient trzeciej strony, ale moim założeniem byłoby, że replikacja PouchDB osiąga współdziałanie, zasadniczo traktując to zachowanie jako protokół, czy nadal czegoś tutaj brakuje? –

+1

Tak, masz rację. Mój komentarz jest przypadkowy, nie ma być krystalicznie czysty. Oczywiście, między punktami końcowymi do replikacji istnieje sztywna rozmowa: protokół. Ale fajne jest to, że ta rozmowa jest po prostu klientem łączącym się i dokonującym normalnych aktualizacji. Nie ma magicznego kanału pozapasmowego do replikacji. Bardziej szczegółowo opisuję model koncepcyjny: http://stackoverflow.com/questions/4766391/what-is-the-couchdb-processing-protocol-is-it-like-git – JasonSmith

+0

CouchDB został zaprojektowany tak, aby był bezpośrednio odsłonięty użytkownikom, takim jak serwer aplikacji. Oczywiście wiele osób z powodzeniem korzysta z niego również w tradycyjnym trójwarstwowym modelu (np. MySQL). Decyzja o udostępnieniu użytkownikom sprowadza się do tego, czy możesz pracować z użytkownikami CouchDB i modelem uwierzytelniania. To jest albo uratowanie życia (jeśli twoja aplikacja pasuje do tego modelu) albo łamacz transakcji (jeśli nie) – JasonSmith