Diese Seite wurde von der Cloud Translation API übersetzt.
Switch to English

Verstehen Firebase Realtime Datenbank-Regeln

Firebase Realtime Datenbank-Regeln bestimmen, wer lesen und Schreibzugriff auf die Datenbank hat, wie Ihre Daten strukturiert ist und welche Indizes existieren. Diese Regeln leben auf dem Server und Firebase automatisch jederzeit erzwungen. Jede Lese- und Schreibanforderung wird erst abgeschlossen werden, wenn Ihre Regeln es erlauben. Standardmäßig wird Ihre Regeln nicht, dass jemand Zugriff auf Ihre Datenbank ermöglichen. Das ist Ihre Datenbank vor Missbrauch zu schützen, bis Sie Zeit haben, Ihre Regeln anpassen oder Authentifizierung einzurichten.

Realtime Datenbank-Regeln haben eine JavaScript-ähnliche Syntax und kommt in vier Typen:

Regeltypen
.lesen Beschreibt, ob und wann Daten dürfen von anderen Nutzern gelesen werden.
.schreiben Beschreibt, ob und wann Daten darf geschrieben werden.
.bestätigen Legt fest, was ein richtig formatierte Wert aussehen wird, ob es ein Kind Attribut hat, und der Datentyp.
.indexOn Gibt ein Kind zu indizieren, um Unterstützung Bestellung und Abfragen.

Echtzeit-Datenbank-Sicherheit Überblick

Die Firebase Realtime-Datenbank bietet einen vollständigen Satz von Werkzeugen für die Sicherheit Ihrer App zu verwalten. Diese Tools machen es einfach, Ihre Benutzer zu authentifizieren, Benutzerrechte durchzusetzen, und Validieren Eingänge.

Firebase betriebene Anwendungen laufen mehr clientseitigen Code als solche mit vielen anderen Technologie-Stacks. Daher kann die Art, wie wir Sicherheit nähern ein bisschen anders, als Sie es gewohnt sind.

Authentifizierung

Ein gemeinsamer erster Schritt, um Ihre App bei der Sicherung ist die Identifizierung Ihre Benutzer. Dieser Vorgang wird als Authentifizierung bezeichnet. Sie können mit Firebase - Authentifizierung Benutzer müssen Ihre App anmelden. Firebase-Authentifizierung enthält Drop-Unterstützung für gemeinsame Authentifizierungsmethoden wie Google und Facebook, sowie E-Mail und Passwort anmelden, anonyme Anmeldung und vieles mehr.

Benutzeridentität ist ein wichtiges Sicherheitskonzept. Verschiedene Benutzer haben unterschiedliche Daten, und manchmal unterschiedliche Fähigkeiten sie haben. Zum Beispiel in einer Chat-Anwendung wird jede Nachricht mit dem Benutzer zugeordnet, die es erstellt. Benutzer können auch in der Lage, ihre eigenen Nachrichten zu löschen, aber keine Nachrichten von anderen Nutzern stammen.

Genehmigung

Ihre Benutzer zu identifizieren, ist nur ein Teil der Sicherheit. Sobald Sie wissen, wer sie sind, müssen Sie einen Weg, um ihren Zugriff auf den Daten in der Datenbank zu steuern. Realtime Datenbank-Regeln können Sie steuern den Zugriff für jeden Benutzer. Zum Beispiel, hier ist ein Satz von Sicherheitsregeln , die jemand den Weg zu lesen erlaubt /foo/ , aber niemand zu schreiben , um es:

{
  "rules": {
    "foo": {
      ".read": true,
      ".write": false
    }
  }
}

.read und .write Regeln kaskadieren, so dass dieser Regelsatz ermöglicht den Zugriff auf alle Daten auf Pfad lesen /foo/ sowie alle tieferen Pfade wie /foo/bar/baz . Beachten Sie, dass .read und .write Regeln flacher in der Datenbank überschreibt tiefe Regeln, so dass der Zugang zu lesen /foo/bar/baz noch in diesem Beispiel sogar auf dem Weg , wenn eine Regel gewährt werden würde /foo/bar/baz auszuzuwertenden falsch.

Die Echtzeit - Datenbank - Regeln umfassen integrierte Variablen und Funktionen , die es Ihnen ermöglichen, andere Wege, serverseitige Zeitstempel, Authentifizierungsinformationen und vieles mehr zu finden. Hier ist ein Beispiel für eine Regel , dass gewährt den Zugriff für authentifizierte Benutzer zu schreiben /users/<uid>/ , wobei <uid> ist die ID des Benutzers durch Authentifizierung Firebase erhalten.

{
  "rules": {
    "users": {
      "$uid": {
        ".write": "$uid === auth.uid"
      }
    }
  }
}

Datenvalidierung

Die Firebase Realtime-Datenbank schemaless. Dies macht es leicht zu ändern Dinge, wie Sie entwickeln, aber wenn Ihre Anwendung ist bereit, zu verteilen, ist es wichtig für die Daten konsistent zu bleiben. Die Regelsprache enthält eine .validate Regel, können Sie Validierungslogik mit den gleichen Ausdrücken für verwendet anzuwenden .read und .write Regeln. Der einzige Unterschied besteht darin , dass die Validierungsregeln nicht kaskadieren tun, so dass alle relevanten Validierungsregeln auf true , um bewerten müssen für die Schreib erlaubt zu werden.

Diese Regel erzwingen , dass die Daten geschrieben /foo/ muss eine Zeichenfolge weniger als 100 Zeichen:

{
  "rules": {
    "foo": {
      ".validate": "newData.isString() && newData.val().length < 100"
    }
  }
}

Validierungsregeln haben Zugriff auf alle die gleichen integrierten Funktionen und Variablen als .read und .write Regeln. Sie können diese verwenden, um Validierungsregeln zu erstellen, die an anderer Stelle in Ihrer Datenbank von Daten bewusst sind, Ihr Benutzer-Identität, Serverzeit und vieles mehr.

Definieren von Datenbankindizes

Die Firebase Echtzeitdatenbank ermöglicht Bestell- und Abfragen von Daten. Für kleine Datengrößen, die Datenbank unterstützt Ad-hoc-Abfragen, so Indizes ist in der Regel nicht während der Entwicklung erforderlich. Vor dem Start obwohl Ihre Anwendung ist es wichtig, Indizes für Rückfragen angeben Sie sicherstellen, müssen sie an die Arbeit fortzusetzen, wie Ihre Anwendung wächst.

Indizes werden die angegebene Verwendung .indexOn Regel. Hier ist ein Beispiel Index Erklärung, dass Would Index die Höhe und Länge Felder für eine Liste der Dinosaurier:

{
  "rules": {
    "dinosaurs": {
      ".indexOn": ["height", "length"]
    }
  }
}

Nächste Schritte