Wszyscy wiemy, że Meteor oferuje sterownik miniMongo, który bezproblemowo umożliwia klientowi dostęp do trwałej warstwy (MongoDB).
Jeśli jakikolwiek klient może uzyskać dostęp do trwałego interfejsu API, w jaki sposób można zabezpieczyć swoją aplikację?
Jakie mechanizmy bezpieczeństwa zapewnia Meteor iw jakim kontekście należy ich używać?
Odpowiedzi:
Podczas tworzenia aplikacji za pomocą polecenia meteor aplikacja domyślnie zawiera następujące pakiety:
Razem naśladują one efekt posiadania przez każdego klienta pełnego dostępu do odczytu / zapisu do bazy danych serwera. Są to przydatne narzędzia do prototypowania (tylko do celów programistycznych), ale zazwyczaj nie są odpowiednie do zastosowań produkcyjnych. Kiedy będziesz gotowy do wydania produkcyjnego, po prostu usuń te pakiety.
Aby dodać więcej, Meteor obsługuje pakiety Facebook / Twitter / i Much More do obsługi uwierzytelniania, a najfajniejszy jest pakiet Accounts-UI
źródło
meteor remove autopublish insecure
.access denied
błąd. Sprawdź to.W dokumencie kolekcji mówi:
źródło
Jeśli mówisz o ograniczeniu klientowi korzystania z nieautoryzowanego interfejsu API wstawiania / aktualizowania / usuwania, jest to możliwe.
Zobacz ich aplikację do zrobienia na https://github.com/meteor/meteor/tree/171816005fa2e263ba54d08d596e5b94dea47b0d/examples/todos
Ponadto dodali teraz wbudowany moduł AUTH, który umożliwia logowanie i rejestrację. Więc jest bezpieczny. Jeśli zajmujesz się XSS, Valiations, nagłówkami klientów itp.
ale każdego dnia możesz przekonwertować aplikację meteor na w pełni działającą aplikację nodejs, wdrażając ją w węźle. Więc jeśli wiesz, jak zabezpieczyć aplikację nodejs, powinieneś być w stanie zabezpieczyć meteor.
źródło
Od wersji 0.6.4, w trybie programowania, bloki is_client i is_server nadal trafiają do systemu klienta. Nie mogę powiedzieć, czy są one oddzielone po wyłączeniu trybu programowania.
Jeśli jednak tak nie jest, haker może uzyskać wgląd w system, przeglądając bloki kodu if (Meteor.is_server). Szczególnie mnie to niepokoi, zwłaszcza że zauważyłem, że nadal nie mogę posegregować Kolekcji na osobne pliki na kliencie i serwerze.
Aktualizacja
Cóż, chodzi o to, aby nie umieszczać kodu związanego z bezpieczeństwem w bloku is_server w katalogu innym niż serwer (tj. - upewnij się, że jest w czymś pod / server.
Chciałem sprawdzić, czy zwariowałem na punkcie niemożności rozdzielenia kolekcji klienta i serwera w katalogach klienta i serwera. W rzeczywistości nie ma z tym problemu.
Oto mój test. To prosty przykład modelu publikowania / subskrypcji, który wydaje się działać dobrze. http://goo.gl/E1c56
źródło