2014-09-03 12 views
5

W produkcji używaliśmy CouchDB, głównie do tworzenia aplikacji w kontrolowanych środowiskach. W większości przypadków używamy biblioteki ze środkowymi artykułami do wykonywania bezpośrednich wywołań na couchdb/cloudant, unikając w ten sposób bezpośredniego (wywołania JavaScript z przodu bezpośrednio na CouchDB/Cloudant).Bezpieczeństwo CouchDB i Cloudant

Ze względów bezpieczeństwa, jest oczywiste, że dla uwierzytelnionego bazie couchdb:
http://{username}:{password}@IPAddress:Port/DB
OR dla cloudant:
https://{username}:{password}@username.cloudant.com/DB, Jeśli połączenie jest wykonane bezpośrednio z JavaScript, Narzędzia dla programistów w przeglądarkach dzisiaj umożliwić osobie do realizacji tego zadzwonić i dlatego ma dostęp do bazy danych w całości.

Załączniki są zwykle bolesne, gdy są używane w środkach. Korzystne jest, aby zmętnienie obsługiwało buforowanie i serwowanie załączników bezpośrednio na przednim końcu, odciążając tym samym nasze środkowe artykuły. Jednak w internecie i wśród ogromnej grupy odbiorców nawiązywanie bezpośrednich połączeń z naszym chmurowym środowiskiem jest trudne.

Zaczynaliśmy od posiadania osobnego konta w chmurze dla wszystkich załączników, tak aby inquisitive boy nie ingerował w rzeczywiste metadane lub informacje naszych użytkowników. Tak więc jedynym kontem chmury, do której mogą mieć dostęp, jest załącznik, ponieważ wykonujemy bezpośrednie wywołania JavaScript do naszej bazy danych.

Pytanie: W jaki sposób możemy znaleźć sposób, w jaki możemy ukryć nazwę użytkownika i hasło naszego cloudant środowisku co pozwala nam bezpiecznie dokonać bezpośredniego połączenia JavaScript na cloudant? Nasza infrastruktura jest całkowicie w chmurze, więc nie mamy serwerów proxy i innych narzędzi do pracy. Słyszeliśmy o usługach skracania adresów URL, CDNs e.t.c. ale nie znaleźliśmy rozwiązania naprawdę rozstrzygającego.

Odpowiedz

0

Spróbuj użyć punktu końcowego _session. Spowoduje to skonfigurowanie uwierzytelniania plików cookie.

0

Jak znaleźć sposób, w jaki ukrywamy nazwę użytkownika i hasło naszego środowiska chmurowego, co pozwala nam bezpiecznie wykonywać bezpośrednie wywołania JavaScript w chmurze?

Z tego co wiem, nie można tego zrobić bez użycia oprogramowania pośredniczącego lub jakiegoś proxy. Ale to nie znaczy, że jesteśmy całkowicie bezbronni. couchdb daje nam kilka włóczni, by szturchnąć inquisitive boy :)

Dobra rzecz, jaką zrobiłeś, to uczynić bazę załączników oddzielną. Nie wspomniałeś w swoim pytaniu, czy używasz systemu autoryzacji couchdb, więc zakładam, że nie jesteś. Pierwszym krokiem jest utworzenie użytkownika w bazie danych couchdb _users, a następnie przypisanie go jako członka do bazy danych załączników. Więcej szczegółów here i here.

Po wykonaniu tego kroku powinieneś mieć członka w bazie danych załączników. Powodem, dla którego chcemy członka, a nie administratora, jest to, że członkowie nie mają uprawnień do pisania lub czytania dokumentów projektowych.

To jest początek, ale to nie wystarczy, ponieważ członek może nadal czytać za pośrednictwem _all_docs i jest to atak dos tam. Problemem, który napotykamy teraz, jest to, że robimy to w tej chwili:

https: // {nazwa użytkownika}: {hasło} @ username.cloudant.com/DB

Bardzo dobrym posunięciem byłoby go zmienić na

https: // {nazwa użytkownika}: {hasło} @ someurl.com/

Jaka jest różnica między tymi dwoma? Ukrywa lokalizację bazy danych i utrudnia dostęp do wbudowanych metod. Można to osiągnąć za pomocą vhosts configuration i some rewrite rules. Niektóre very good stuff jest na blogu Caolan też

Z tym na miejscu masz dwie rzeczy dla ciebie.

  1. Stalkerinquisitive boy będą pojęcia, gdzie udać się do rozmowy.

  2. Nie będzie sposobu, aby mógł uzyskać zawartość nieznanych dokumentów poprzez bezpośrednie połączenia. Może on uzyskać dostęp do bazy danych tylko przez ustawione reguły.

Nadal nie jest w 100% bezpieczny, ale jest w porządku, jeśli chodzi o poziom bezpieczeństwa na poziomie odczytu. Mam nadzieję że to pomoże.