Szukaj…


Wprowadzenie

Dzięki Firebase Realtime Database Twoje zasady dotyczące baz danych stanowią bezpieczeństwo po stronie serwera. Musisz być bardzo ostrożny i świadomy, kto ma dostęp do twojej bazy danych. Ważne jest, aby nikt nie uzyskał dostępu do danych, które nie powinny.

Domyślnie reguły bazy danych Firebase Realtime zezwalają każdemu uwierzytelnionemu użytkownikowi na odczytywanie i zapisywanie wszystkich danych, prawdopodobnie nie jest to aplikacja, którą chcesz zrobić.

Spójrz na poniższe przykłady dla różnych scenariuszy.

Uwagi

Firebase Realtime Database zapewnia elastyczny, oparty na wyrażeniach język reguł ze składnią podobną do JavaScript, aby łatwo zdefiniować strukturę danych, sposób ich indeksowania oraz kiedy dane mogą być odczytywane i zapisywane. W połączeniu z naszymi usługami uwierzytelniania możesz określić, kto ma dostęp do danych i chronić dane osobowe użytkowników przed nieautoryzowanym dostępem.

Domyślnie reguły bazy danych wymagają uwierzytelnienia Firebase i przyznają pełne uprawnienia do odczytu i zapisu tylko uwierzytelnionym użytkownikom. Domyślne reguły gwarantują, że twoja baza danych nie będzie dostępna dla nikogo, zanim będziesz mieć możliwość skonfigurowania

Oficjalna dokumentacja

https://firebase.google.com/docs/database/security/quickstart

Jak skonfigurować reguły

  1. Wejdź do konsoli Firebase.
  2. Wybierz swój projekt
  3. Kliknij sekcję Baza danych po lewej stronie, a następnie wybierz kartę Reguły.

Jeśli chcesz przetestować reguły bezpieczeństwa przed wprowadzeniem ich do produkcji, możesz symulować operacje w konsoli za pomocą przycisku Symuluj w prawym górnym rogu edytora reguł.

Domyślne reguły

Domyślne reguły wymagają uwierzytelnienia.
Umożliwiają pełny dostęp do odczytu i zapisu uwierzytelnionym użytkownikom Twojej aplikacji. Są one przydatne, jeśli chcesz, aby dane były otwarte dla wszystkich użytkowników Twojej aplikacji, ale nie chcesz, aby były otwarte dla świata.

// These rules require authentication
{
  "rules": {
    ".read": "auth != null",
    ".write": "auth != null"
  }
}

Jak ustawić publicznie pliki do odczytu i zapisu

Po prostu zdefiniuj:

// These rules give anyone, even people who are not users of your app,
// read and write access to your database
{
  "rules": {
    ".read": true,
    ".write": true
  }
}

Może to być przydatne podczas programowania, ale zwróć uwagę, ponieważ ten poziom dostępu oznacza, że każdy może odczytywać i zapisywać dane w bazie danych .

Jak wyłączyć dostęp do odczytu i zapisu

Możesz zdefiniować prywatne reguły, aby wyłączyć dostęp do odczytu i zapisu do bazy danych przez użytkowników. Dzięki tym regułom możesz uzyskać dostęp do bazy danych tylko wtedy, gdy masz uprawnienia administracyjne (które możesz uzyskać, uzyskując dostęp do bazy danych za pośrednictwem konsoli Firebase lub logując się z serwera ) .

// These rules don't allow anyone read or write access to your database
{
  "rules": {
    ".read": false,
    ".write": false
  }
}

Jak przyznać dostęp tylko uwierzytelnionym użytkownikom

Oto przykład reguły, która nadaje każdemu uwierzytelnionemu użytkownikowi osobisty węzeł w /users/$user_id gdzie $ user_id jest identyfikatorem użytkownika uzyskanym przez Uwierzytelnianie .

// These rules grant access to a node matching the authenticated
// user's ID from the Firebase auth token
{
  "rules": {
    "users": {
      "$user_id": {
        ".read": "$user_id === auth.uid",
        ".write": "$user_id === auth.uid"
      }
    }
  }
}

Jak zezwolić na odczytanie określonego elementu z grupy, ale uniemożliwić wyświetlanie listy członków grupy

Powszechną praktyką jest tworzenie grup elementów poprzez tworzenie prostych węzłów wartości z identyfikatorem elementu jako kluczem. Na przykład możemy dodać użytkownika do grupy „administratorzy”, tworząc węzeł w /administrators/$user_id z wartością true . Ze względów bezpieczeństwa nie chcemy, aby ktokolwiek wiedział, kim są administratorzy, ale nadal chcemy sprawdzić, czy użytkownik uwierzytelniony jest administratorem . Dzięki tym regułom możemy to zrobić:

{
  "rules": {
    "administrators": {
      // No one can list administrators
      ".read": "false",
      "$uid": {
        // Authenticated user can check if they are in this group
        ".read": "$uid === auth.uid",
        // Administrators can write
        ".write": "data.parent().child(auth.uid).val() === true",
        // Allow only add or delete, no duplicates
        ".validate": "!data.exists() || !newData.exists() || newData.isBoolean()",
      }
    }
  }
}


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow