In dieser Anleitung erfahren Sie mehr über häufige Sicherheitslücken in Cloud Firestore Security Rules-Konfigurationen. Außerdem können Sie Ihre eigenen Regeln überprüfen und besser schützen und Ihre Änderungen testen, bevor Sie sie bereitstellen.
KI-Prompt für KI-Unterstützung
Wenn Sie KI-Unterstützung benötigen, kopieren Sie den Prompt unten in Ihren KI-Coding-Agenten (z. B. Gemini in Android Studio, Antigravity, Claude Code, Codex und Cursor). Sie können den Prompt anpassen und mit dem KI-Agenten interagieren. Weitere Informationen zur Installation von Firebase-Agent-Skills
Help me use Firebase in my app.
1. Make sure that **Firebase agent skills** are installed and updated. For Claude Code, Codex, or Cursor agents, help me install the Firebase plugin. For other agents, run `npx skills add firebase/agent-skills`. Always try to use **Firebase agent skills** for Firebase-related tasks.
2. Help me write, validate, and deploy Firebase Security Rules to protect my app's Firestore data.
Wenn Sie eine Benachrichtigung erhalten, dass Ihre Cloud Firestore-Datenbank nicht richtig gesichert ist, können Sie die Sicherheitslücken beheben, indem Sie Ihre Cloud Firestore Security Rules ändern und testen.
Rufen Sie in der Firebase Console den Tab "Regeln" auf, um Ihre vorhandenen Sicherheitsregeln anzusehen.
Informationen zu Ihrem Cloud Firestore Security Rules
Cloud Firestore Security Rules Ihre Daten vor böswilligen Nutzern schützen. Die Standardregeln für alle Cloud Firestore-Instanzen, die in der Firebase Console erstellt werden, verweigern allen Nutzern den Zugriff. Damit Sie Ihre Anwendung entwickeln und auf Ihre Datenbank zugreifen können, müssen Sie diese Regeln ändern und möglicherweise allen Nutzern in einer Entwicklungsumgebung uneingeschränkten Zugriff gewähren. Bevor Sie Ihre Anwendung in einer Produktionsumgebung bereitstellen, sollten Sie sich jedoch die Zeit nehmen, Ihre Regeln entsprechend zu konfigurieren und Ihre Daten zu schützen.
Wenn Sie Ihre App entwickeln und verschiedene Konfigurationen für Ihre Regeln testen, verwenden Sie den Cloud Firestore-Emulator, um Ihre App in einer lokalen Entwicklungsumgebung auszuführen.
Häufige Szenarien mit unsicheren Regeln
Die Cloud Firestore Security Rules, die möglicherweise standardmäßig gelten oder die Sie bei der anfänglichen Entwicklung Ihrer Anwendung mit Cloud Firestore eingerichtet haben, sollten vor der Bereitstellung geprüft und aktualisiert werden. Achten Sie darauf, dass die Daten Ihrer Nutzer ordnungsgemäß geschützt sind und vermeiden Sie dazu die im Folgenden aufgeführten häufigen Fehler.
Unbeschränkter Zugriff
Bei der Einrichtung von Cloud Firestore haben Sie möglicherweise Ihre Regeln so festgelegt, dass für die Entwicklung ein offener Zugriff möglich ist. Eventuell gehen Sie auch davon aus, dass Sie die einzige Person sind, die Ihre Anwendung nutzt. Allerdings ist sie nach dem Bereitstellen im Internet verfügbar. Wenn Sie Nutzer nicht authentifizieren und keine Sicherheitsregeln konfigurieren, kann jeder, der Ihre Projekt-ID errät, die Daten stehlen, ändern oder löschen.
| Nicht empfohlen: Alle Nutzer haben Lese- und Schreibzugriff. |
// Allow read/write access to all users under any conditions // Warning: **NEVER** use this rule set in production; it allows // anyone to overwrite your entire database. service cloud.firestore { match /databases/{database}/documents { match /{document=**} { allow read, write: if true; } } }
| Lösung: Legen Sie Regeln fest, die den Lese- und Schreibzugriff beschränken. Erstellen Sie Regeln, die für Ihre Datenhierarchie sinnvoll sind. Eine der gängigsten Lösungen für dieses Sicherheitsproblem ist die nutzerbasierte Sicherheit mit Firebase Authentication. Weitere Informationen zum Authentifizieren von Nutzern mit Regeln |
Nur Eigentümer
service cloud.firestore { match /databases/{database}/documents { // Allow only authenticated content owners access match /some_collection/{document} { // Allow reads and deletion if the current user owns the existing document allow read, delete: if request.auth.uid == resource.data.author_uid; // Allow creation if the current user owns the new document allow create: if request.auth.uid == request.resource.data.author_uid; // Allow updates by the owner, and prevent change of ownership allow update: if request.auth.uid == request.resource.data.author_uid && request.auth.uid == resource.data.author_uid; } } }
Gemischter öffentlicher und privater Zugriff
service cloud.firestore { match /databases/{database}/documents { // Allow public read access, but only content owners can write match /some_collection/{document} { // Allow public reads allow read: if true // Allow creation if the current user owns the new document allow create: if request.auth.uid == request.resource.data.author_uid; // Allow updates by the owner, and prevent change of ownership allow update: if request.auth.uid == request.resource.data.author_uid && request.auth.uid == resource.data.author_uid; // Allow deletion if the current user owns the existing document allow delete: if request.auth.uid == resource.data.author_uid; } } }
Zugriff für jeden authentifizierten Nutzer
Manchmal prüfen Cloud Firestore Security Rules, ob ein Nutzer angemeldet ist, aber schränken den Zugriff auf Grundlage dieser Authentifizierung nicht weiter ein. Wenn eine Ihrer Regeln auth != null enthält, bestätigen Sie, dass alle angemeldeten Nutzer Zugriff auf die Daten haben sollen.
| Nicht empfohlen: Jeder angemeldete Nutzer hat Lese- und Schreibzugriff auf Ihre gesamte Datenbank. |
service cloud.firestore { match /databases/{database}/documents { match /some_collection/{document} { allow read, write: if request.auth != null; } } }
| Lösung: Grenzen Sie den Zugriff mithilfe von Sicherheitsbedingungen ein. Wenn Sie die Authentifizierung prüfen lassen, können Sie auch eines der Authentifizierungsattribute verwenden, um den Zugriff für bestimmte Nutzer und bestimmte Datensätze weiter einzuschränken. Weitere Informationen finden Sie unter Sicherheitsbedingungen hinzufügen und rollenbasierter Zugriff. |
Rollenbasierter Zugriff
service cloud.firestore { match /databases/{database}/documents { // Assign roles to all users and refine access based on user roles match /some_collection/{document} { allow read: if request.auth != null && get(/databases/$(database)/documents/users/$(request.auth.uid)).data.role == "Reader" allow write: if request.auth != null && get(/databases/$(database)/documents/users/$(request.auth.uid)).data.role == "Writer" // Note: Checking for roles in your database using `get` (as in the code // above) or `exists` carry standard charges for read operations. } } }
Attributbasierter Zugriff
// Give each user in your database a particular attribute // and set it to true/false // Then, use that attribute to grant access to subsets of data // For example, an "admin" attribute set // to "true" grants write access to data service cloud.firestore { match /databases/{database}/documents { match /collection/{document} { allow write: if get(/databases/$(database)/documents/users/$(request.auth.uid)).data.admin == true; allow read: true; } } }
Gemischter öffentlicher und privater Zugriff
service cloud.firestore {
match /databases/{database}/documents {
// Allow public read access, but only content owners can write
match /some_collection/{document} {
allow read: if true
allow write: if request.auth.uid == request.resource.data.author_uid
}
}
}
Zugriff für nicht bestätigte E‑Mail-Adressen
Manchmal wird in Cloud Firestore Security Rules geprüft, ob die E-Mail-Adresse eines Nutzers zu einer bestimmten Domain gehört. Das ist zwar im Allgemeinen eine gute Vorgehensweise, aber E‑Mail-Adressen werden bei der Anmeldung nicht immer bestätigt, bis der Nutzer nach Erhalt einer Bestätigungs-E‑Mail einen zusätzlichen Schritt ausführt. Achten Sie darauf, dass Sie bestätigen, dass die E-Mail-Adresse tatsächlich dem Nutzer gehört.
| Nicht empfohlen:Jeder Nutzer kann sich mit einer beliebigen E-Mail-Adresse anmelden. |
service cloud.firestore { match /databases/{database}/documents { // Allow access based on email domain match /some_collection/{document} { allow read: if request.auth != null && request.auth.email.endsWith('@example.com') } } }
| Lösung:Schränken Sie den Zugriff auf bestätigte E‑Mail-Adressen ein. |
E-Mails bestätigen
service cloud.firestore { match /databases/{database}/documents { // Allow access based on email domain match /some_collection/{document} { allow read: if request.auth != null && request.auth.email_verified && request.auth.email.endsWith('@example.com') } } }
Geschlossener Zugriff
Ein weiterer gängiger Ansatz während der Entwicklung Ihrer Anwendung besteht darin, Ihre Daten zu sperren. In der Regel bedeutet dies, dass Sie den Lese- und Schreibzugriff für alle Nutzer folgendermaßen gesperrt haben:
// Deny read/write access to all users under any conditions
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if false;
}
}
}
Die Firebase Admin SDKs und Cloud Functions haben aber weiterhin Zugriff auf Ihre Datenbank. Verwenden Sie diese Regeln, wenn Sie Cloud Firestore als reines Server-Back-End in Verbindung mit dem Firebase Admin SDK nutzen möchten. Dies ist zwar sicher, Sie müssen aber testen, ob die Clients Ihrer Anwendung Daten ordnungsgemäß abrufen können.
Cloud Firestore Security Rules und ihre Funktionsweise werden im Artikel Erste Schritte mit Cloud Firestore Security Rules beschrieben.
In Cloud Firestore Security Rules nachsehen
Mit dem Cloud Firestore-Emulator können Sie das Verhalten Ihrer App und die Konfigurationen von Cloud Firestore Security Rules prüfen. Verwenden Sie den Cloud Firestore-Emulator, um Einheitentests in einer lokalen Umgebung auszuführen und zu automatisieren, bevor Sie Änderungen bereitstellen.
Wenn Sie die aktualisierten Cloud Firestore Security Rules in der Firebase Console schnell testen möchten, verwenden Sie das Regel-Playground-Tool.

- Klicken Sie zum Öffnen von Regel-Playground auf dem Tab Regeln auf Regel-Playground.
- Wählen Sie in den Einstellungen zu Regel-Playground Optionen für Ihren Test aus, wie z. B. die folgenden:
- Lese- oder Schreibvorgänge testen
- Unter Standort einen bestimmten Standort in Ihrer Datenbank als Pfad
- Authentifizierungstyp — nicht authentifizierter Nutzer, authentifizierter anonymer Nutzer oder eine bestimmte Nutzer-ID
- Dokumentspezifische Daten, auf die Ihre Regeln speziell verweisen (z. B. wenn für Ihre Regeln das Vorhandensein eines bestimmten Felds erforderlich ist, bevor ein Schreibvorgang erlaubt wird)
- Klicken Sie auf Ausführen und sehen Sie sich die Ergebnisse im Banner über dem Fenster mit den Regeln an.