Firebase Realtime Database-Sicherheitsregeln bestimmen, wer Lese- und Schreibzugriff auf Ihre wie Ihre Daten strukturiert sind und welche Indexe vorhanden sind. Diese Regeln gelten auf den Firebase-Servern und werden immer automatisch erzwungen. Jede Lese- und Schreibanfrage wird nur ausgeführt, wenn sie Ihren Regeln entspricht. Standardmäßig Ihre Regeln jedem Zugriff auf Ihre Datenbank verweigern. Dies dient dem Schutz Ihrer bis Sie genug Zeit haben, Ihre Regeln anzupassen oder Authentifizierung.
Echtzeit-Datenbanksicherheitsregeln haben eine JavaScript-ähnliche Syntax und sind in vier Arten verfügbar:
Regeltypen | |
---|---|
.read | Beschreibt, ob und wann Daten von Nutzern gelesen werden dürfen. |
.write | Beschreibt, ob und wann Daten geschrieben werden dürfen. |
.valid | Definiert, wie ein richtig formatierter Wert aussieht, ob er untergeordnete Attribute hat, und den Datentyp. |
.indexOn | Gibt ein untergeordnetes Element für den Index an, um Sortierung und Abfrage zu unterstützen. |
Realtime Database-Sicherheitsübersicht
Firebase Realtime Database bietet eine umfassende Auswahl an Tools zur Verwaltung des für die Sicherheit Ihrer App. Diese Tools erleichtern die Authentifizierung Ihrer Nutzer, Nutzerberechtigungen erzwingen und Eingaben validieren.
Auf Firebase-basierten Apps wird mehr clientseitiger Code ausgeführt als in Apps mit vielen anderen Software-Stacks. Daher ist unser Ansatz für Sicherheit als Sie es gewohnt sind.
Authentifizierung
Ein häufiger erster Schritt zum Schutz Ihrer App zur Identifizierung der Nutzenden. Dieser Vorgang wird als Authentifizierung bezeichnet. Sie können Firebase Authentication verwenden. damit sich Nutzer in Ihrer App anmelden können. Firebase-Authentifizierung umfasst auch die Unterstützung gängiger Authentifizierungsmethoden wie Google und Facebook sowie Login-E-Mail-Adresse und Passwort, anonyme Anmeldung und vieles mehr.
Die Nutzeridentität ist ein wichtiges Sicherheitskonzept. Unterschiedliche Nutzer haben unterschiedliche Daten und manchmal auch unterschiedliche Funktionen. Zum Beispiel in einem Chat wird jede Nachricht dem Nutzer zugeordnet, der sie erstellt hat. Nutzer*innen können möglicherweise auch ihre eigenen Nachrichten löschen, jedoch nicht die von anderen geposteten Nachrichten. Nutzenden.
Autorisierung
Die Identifizierung Ihrer Nutzer ist nur ein Teil der Sicherheit. Sobald Sie wissen, wer diese Person ist,
ihren Zugriff auf Daten in Ihrer Datenbank kontrollieren können. Echtzeit-Datenbanksicherheitsregeln
können Sie den Zugriff für jeden Nutzer steuern. Hier ist eine Reihe von
Sicherheitsregeln, die jedem Nutzer erlauben, den Pfad /foo/
zu lesen, aber keine
eine, um dorthin zu schreiben:
{ "rules": { "foo": { ".read": true, ".write": false } } }
.read
- und .write
-Regeln werden kaskadiert, sodass dieser Regelsatz
Gewährt Lesezugriff auf alle Daten im Pfad /foo/
sowie alle tieferen Daten
Pfade wie /foo/bar/baz
. Beachten Sie, dass .read
und
.write
-Regeln in der Datenbank überschreiben tiefere Regeln.
In diesem Beispiel wird der Lesezugriff auf /foo/bar/baz
weiterhin gewährt
auch wenn eine Regel im Pfad /foo/bar/baz
als falsch ausgewertet wurde.
Die Realtime Database-Sicherheitsregeln umfassen
integrierte Variablen
und Funktionen, mit denen Sie
auf andere Pfade, serverseitige Zeitstempel, Authentifizierungsinformationen,
und vieles mehr. Hier ein Beispiel für eine Regel, die Schreibzugriff
authentifizierte Nutzer an /users/<uid>/
, wobei <uid> ist
Die ID des Nutzers, die Sie über Firebase Authentication erhalten haben.
{ "rules": { "users": { "$uid": { ".write": "$uid === auth.uid" } } } }
Datenvalidierung
Die Firebase Realtime Database ist schemalos. So können Änderungen
aber sobald Ihre App für den Vertrieb bereit ist, ist es wichtig,
um einheitlich zu bleiben. Die Regelsprache enthält eine .validate
-Regel, mit der Sie Validierungslogik mit denselben Ausdrücken anwenden können, die auch für .read
- und .write
-Regeln verwendet werden. Der einzige Unterschied
dass Validierungsregeln nicht kaskadieren, sodass alle relevanten
müssen Validierungsregeln den Wert "true" ergeben, damit der Schreibvorgang zulässig ist.
Diese Regel erzwingt, dass in /foo/
geschriebene Daten ein String sein müssen
weniger als 100 Zeichen:
{ "rules": { "foo": { ".validate": "newData.isString() && newData.val().length < 100" } } }
Validierungsregeln haben Zugriff auf dieselben integrierten Funktionen und
Variablen als .read
- und .write
-Regeln. Sie können
um Validierungsregeln zu erstellen, die Daten an anderer Stelle in Ihrem
Datenbank, die Identität
des Nutzers, die Serverzeit und vieles mehr.
Datenbankindexe definieren
Firebase Realtime Database ermöglicht das Sortieren und Abfragen von Daten. Für Small Data unterstützt die Datenbank Ad-hoc-Abfragen. die während der Entwicklung erforderlich sind. Bevor Sie Ihre App veröffentlichen, sollten Sie Indexe für alle Abfragen angeben, um sicherzustellen, dass sie Ihre App wächst.
Indexe werden mit der Regel .indexOn
angegeben. Hier ist ein Beispiel für eine Indexdeklaration, mit der die Felder „Höhe“ und „Länge“ für eine Liste von Dinosauriern indexiert werden:
{ "rules": { "dinosaurs": { ".indexOn": ["height", "length"] } } }
Nächste Schritte
- Erste Schritte mit der Regelentwicklung für Ihre Datenbank
- Weitere Informationen zum Sichern von Daten mithilfe von Sicherheitsregeln
- Weitere Informationen zum Festlegen von Indexen mithilfe von Regeln