2013-10-08 6 views
5

Uświadomiłem sobie, że przy tak dużej ilości logiki po stronie klienta złośliwi użytkownicy mogą podszywać się, zastępować lub uruchamiać aplikacje Firebase za pomocą konsoli w dowolnej przeglądarce.W jaki sposób zapobiegasz włamaniom do konsol po stronie klienta w aplikacjach sieci Web firebase?

Na przykład mogę wpisać $ ("flaga"). Kliknij() i trzema suwakami oznacz, że każdy wpis jest nieaktualny w mojej aplikacji.

Każda logika obronna, którą piszę, będzie dostępna dla każdego, kto chce ją złamać.

Jak sobie z tym poradziłeś? Czy jest w pobliżu praca?

+0

Nie można uniemożliwić innym osobom korzystania z konsoli. Użyj strony serwera. – Dom

+1

Przepustowość liczby flag/aktualizacji od dowolnego użytkownika do pewnego limitu bezwzględnego lub limitu/minuty. Wykryj pliki cookie, identyfikator przeglądarki, adres IP lub dowolną tożsamość użytkownika, której chcesz używać. – ChuckCottrill

+1

Zasady bezpieczeństwa Firebase mogą uniemożliwiać użytkownikom zmianę danych, których nie chcesz, aby dotykały: https://www.firebase.com/docs/security-quickstart.html – Anant

Odpowiedz

5

W rzeczywistości Firebase nie różni się od innych procesów serwera pod względem bezpieczeństwa. Każdy może otworzyć konsolę JavaScript w dowolnej witrynie (lub napisać własną stronę HTML lub uruchomić curl z wiersza poleceń), aby spróbować manipulować danymi.

Firebase obsługuje klientów za pomocą prostego, ale zaskakująco silnego kodu: security rules. Połącz ze schematem uwierzytelniania, a możesz ograniczyć dostęp do wszystkich przychodzących danych i je potwierdzić przy minimalnym wysiłku.

{ 
    "rules": { 
     // widgetName must be a string 
     "widgetName: { ".validate": "newData.isString()" }, 

     // user accounts can only be read by the authenticated client 
     "users": { 
      "$user_id": { 
       ".read": "$user_id === auth.id" 
      } 
     } 
    } 
} 
+1

Interesujące komentarze i odpowiedzi. Ostatnio zagłębiłem się w zasady bezpieczeństwa i widzę, na co myślę, że wskazujesz. wyrażenie sprawdzania poprawności może być czymś więcej niż sprawdzaniem dopasowań auth i tym podobnych. Może sprawdzić różnice w znacznikach czasowych lub jakiekolwiek inne porównanie, które wymyślę. na przykład ten sam użytkownik o znacznikach czasu mniejszych niż 500 ms lub podobnych. Jak zwykle, potrzeba dużo smoły, aby zrobić coś niedużego. – Itumac

+0

Zastanawiam się, czy może się zdarzyć następujący przykładowy scenariusz: Załóżmy, że mam bloga i na każdej stronie umieszczam 10 postów dla uwierzytelnionych użytkowników. Jeśli jeden uwierzytelniony użytkownik odwiedza adres URL http://mydb.firebase.com/posts .., zobaczy wszystkie moje 200 bieżących wpisów? Czy będą miały dostęp do widoku węzłów, których nie chcę? Podobnie jak użytkownicy, którzy "polubili" post? Jeśli tak, w jaki sposób mogę uniemożliwić im dostęp do adresu URL? – user2399432

0

Zasady Firebase to tak naprawdę nowe podejście do tworzenia stron internetowych. Możesz zbudować dowolną aplikację internetową, korzystając z reguł. Nie umieszczę tutaj kodu zasad, ale wyjaśnię, co mam na myśli. Na przykład. Chcesz zbudować aplikację do nauki. używając reguł, możesz utworzyć dwie lub trzy role dla użytkowników. Następnie dla każdej zawartości można umieścić pole (na przykład tablicę) i sprawdzić dla każdego żądania, czy użytkownik requestera po uwierzytelnieniu ma rolę do uzyskania dostępu do niektórych treści. Myślę, że wszystkie CMS działają teraz w ten sposób.

Mam nadzieję, że da to więcej pomysłów na platformie Firebase.