Suche…


Einführung

Mit der Firebase-Echtzeitdatenbank sind Ihre Datenbankregeln Ihre serverseitige Sicherheit. Sie müssen sehr vorsichtig sein und wissen, wer Zugriff auf Ihre Datenbank hat. Es ist wichtig, dass niemand Zugriff auf Ihre Daten erhält, die dies nicht tun sollten.

Die Regeln der Firebase-Echtzeitdatenbank ermöglichen standardmäßig jedem authentifizierten Benutzer das Lesen und Schreiben aller Daten. Dies ist wahrscheinlich nicht das, was Ihre App tun soll.

Sehen Sie sich die Beispiele unten für verschiedene Szenarien an.

Bemerkungen

Die Firebase-Echtzeitdatenbank bietet eine flexible, ausdrucksbasierte Regelsprache mit JavaScript-ähnlicher Syntax, um auf einfache Weise festzulegen, wie Ihre Daten strukturiert werden sollen, wie sie indiziert werden sollen und wann Ihre Daten gelesen und geschrieben werden können. In Verbindung mit unseren Authentifizierungsdiensten können Sie festlegen, wer Zugriff auf welche Daten hat, und die persönlichen Daten Ihrer Benutzer vor unbefugtem Zugriff schützen.

Standardmäßig erfordern Ihre Datenbankregeln die Firebase-Authentifizierung und gewähren nur authentifizierten Benutzern vollständige Lese- und Schreibberechtigungen. Die Standardregeln stellen sicher, dass Ihre Datenbank nicht von jedermann zugänglich ist, bevor Sie die Möglichkeit haben, i zu konfigurieren

Offizielle Dokumentation

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

Wie konfiguriere ich Regeln?

  1. Gehen Sie in die Firebase-Konsole.
  2. Wähle dein Projekt
  3. Klicken Sie links auf den Abschnitt Datenbank, und wählen Sie die Registerkarte Regeln aus.

Wenn Sie Ihre Sicherheitsregeln testen möchten, bevor Sie sie in der Produktion einsetzen, können Sie Vorgänge in der Konsole mithilfe der Schaltfläche Simulieren oben rechts im Regeleditor simulieren.

Die Standardregeln

Die Standardregeln erfordern eine Authentifizierung.
Sie ermöglichen uneingeschränkten Lese- und Schreibzugriff für authentifizierte Benutzer Ihrer App. Sie sind nützlich, wenn Sie möchten, dass Daten allen Benutzern Ihrer App offen stehen, sie jedoch nicht für die Welt offen sind.

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

So legen Sie Ihre Dateien öffentlich lesbar und beschreibbar fest

Definieren Sie einfach:

// 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
  }
}

Dies kann während der Entwicklung nützlich sein, aber achten Sie darauf, da diese Zugriffsstufe bedeutet, dass jeder Ihre Datenbank lesen oder schreiben kann .

So deaktivieren Sie den Lese- und Schreibzugriff

Sie können private Regeln definieren, um den Lese- und Schreibzugriff auf Ihre Datenbank durch Benutzer zu deaktivieren. Mit diesen Regeln können Sie nur auf die Datenbank zugreifen, wenn Sie über Administratorberechtigungen verfügen (die Sie erhalten, wenn Sie über die Firebase-Konsole auf die Datenbank zugreifen oder sich von einem Server aus anmelden ) .

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

So gewähren Sie nur authentifizierten Benutzern Zugriff

Hier ein Beispiel einer Regel, die jedem authentifizierten Benutzer einen persönlichen Knoten unter /users/$user_id wobei $ user_id die ID des Benutzers ist, der durch Authentifizierung abgerufen wurde.

// 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"
      }
    }
  }
}

Wie kann man das Lesen eines bestimmten Elements aus der Gruppe zulassen, jedoch keine Gruppenmitglieder auflisten?

Es ist üblich, Gruppen von Elementen zu erstellen, indem einfache Werteknoten mit der Element-ID als Schlüssel erstellt werden. Beispielsweise können wir einen Benutzer zur Gruppe "Administratoren" hinzufügen, indem Sie einen Knoten unter /administrators/$user_id mit dem Wert " true " erstellen. Wir möchten aus Sicherheitsgründen nicht, dass jemand weiß, wer Administratoren ist, aber wir möchten trotzdem überprüfen, ob ein authentifizierter Benutzer Administrator ist . Mit diesen Regeln können wir genau das tun:

{
  "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
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow