Unsichere Regeln vermeiden

In dieser Anleitung erfahren Sie mehr über häufige Sicherheitslücken in Firebase 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.

Wenn Sie eine Benachrichtigung erhalten, dass Ihre Daten nicht ordnungsgemäß geschützt sind, sehen Sie sich diese häufigen Fehler an und aktualisieren Sie alle anfälligen Regeln.

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 data.

Auf Ihr Firebase Security Rules zugreifen

Wenn Sie Ihre vorhandenen Security Rules aufrufen möchten, verwenden Sie entweder das Firebase-CLI oder die Firebase-Konsole. Achten Sie darauf, Ihre Regeln immer mit derselben Methode zu bearbeiten, um zu vermeiden, dass Aktualisierungen versehentlich überschrieben werden. Wenn Sie nicht sicher sind, ob Ihre lokal definierten Regeln die neuesten Updates widerspiegeln, wird in der Firebase-Konsole immer die zuletzt bereitgestellte Version von Firebase Security Rules angezeigt.

Wenn Sie in der Firebase-Konsole auf Ihre Regeln zugreifen möchten, wählen Sie Ihr Projekt aus und rufen Sie dann Realtime Database, Cloud Firestore oder Storage auf. Klicken Sie auf Regeln, wenn Sie sich in der richtigen Datenbank oder dem richtigen Speicher-Bucket befinden.

Wenn Sie über die Firebase CLI auf Ihre Regeln zugreifen möchten, rufen Sie die Regeldatei auf, die in Ihrer firebase.json-Datei angegeben ist.

Firebase Security Rules verstehen

Firebase Security Rules Ihre Daten vor böswilligen Nutzern schützen. Wenn Sie in der Firebase Console eine Datenbankinstanz oder einen Cloud Storage-Bucket erstellen, können Sie entweder allen Nutzern den Zugriff verweigern (Gesperrter Modus) oder allen Nutzern Zugriff gewähren (Testmodus). Während der Entwicklung ist möglicherweise eine offenere Konfiguration sinnvoll. Bevor Sie Ihre App 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 einen der lokalen Firebase-Emulatoren, um Ihre App in einer lokalen Entwicklungsumgebung auszuführen.

Häufige Szenarien mit unsicheren Regeln

Die Security Rules, die Sie möglicherweise standardmäßig oder bei der ersten Entwicklung Ihrer App eingerichtet haben, sollten vor der Bereitstellung Ihrer App überprüft und aktualisiert werden. Achten Sie darauf, die Daten Ihrer Nutzer angemessen zu schützen, indem Sie die folgenden häufigen Fehler vermeiden.

Unbeschränkter Zugriff

Bei der Einrichtung Ihres Firebase-Projekts 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:Lese- und Schreibzugriff für alle Nutzer.

Cloud Firestore

// Allow read/write access to all users under any conditions
// Warning: **NEVER** use this ruleset in production; it allows
// anyone to overwrite your entire database.

service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if true;
    }
  }
}

Realtime Database

{
  // Allow read/write access to all users under any conditions
  // Warning: **NEVER** use this ruleset in production; it allows
  // anyone to overwrite your entire database.

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

Cloud Storage

// Anyone can read or write to the bucket, even non-users of your app.
// Because it is shared with App Engine, this will also make
// files uploaded using App Engine public.
// Warning: This rule makes every file in your Cloud Storage bucket accessible to any user.
// Apply caution before using it in production, since it means anyone
// can overwrite all your files.

service firebase.storage {
  match /b/{bucket}/o {
    match /{allPaths=**} {
      allow read, write;
    }
  }
}
    
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

Cloud Firestore

Realtime Database

Cloud Storage

Zugriff für jeden authentifizierten Nutzer

Manchmal prüfen 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.

Cloud Firestore

service cloud.firestore {
  match /databases/{database}/documents {
    match /some_collection/{document} {
      allow read, write: if request.auth.uid != null;
    }
  }
}

Realtime Database

{
  "rules": {
    ".read": "auth.uid !== null",
    ".write": "auth.uid !== null"
  }
}

Cloud Storage

// Only authenticated users can read or write to the bucket
service firebase.storage {
  match /b/{bucket}/o {
    match /{allPaths=**} {
      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 zu den verschiedenen Authentifizierungseigenschaften

Cloud Firestore

Realtime Database

Cloud Storage

(Realtime Database) Falsch übernommene Regeln

Realtime Database Security Rules-Kaskade, bei der Regeln auf flacheren, übergeordneten Pfaden Regeln auf tieferen, untergeordneten Knoten überschreiben. Wenn Sie eine Regel für einen untergeordneten Knoten schreiben, denken Sie daran, dass damit nur zusätzliche Berechtigungen erteilt werden können. Sie können den Zugriff auf Daten in einem tieferen Pfad in Ihrer Datenbank nicht verfeinern oder widerrufen.

Nicht empfohlen:Regeln auf untergeordneten Pfaden verfeinern
{
  "rules": {
     "foo": {
        // allows read to /foo/*
        ".read": "data.child('baz').val() === true",
        "bar": {
          /* ignored, since read was allowed already */
          ".read": false
        }
     }
  }
}
Lösung:Schreiben Sie Regeln für übergeordnete Pfade, die breit gefasst sind, und gewähren Sie spezifischere Berechtigungen für untergeordnete Pfade. Wenn für Ihren Datenzugriff eine höhere Granularität erforderlich ist, sollten Sie Ihre Regeln entsprechend detailliert halten. Weitere Informationen zum Kaskadieren Realtime Database Security Rules von Realtime Database Security Rules

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:

Cloud Firestore

// Deny read/write access to all users under any conditions
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if false;
    }
  }
}

Realtime Database

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

Cloud Storage

// Access to files through Cloud Storage is completely disallowed.
// Files may still be accessible through App Engine or Google Cloud Storage APIs.

service firebase.storage {
  match /b/{bucket}/o {
    match /{allPaths=**} {
      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 oder Realtime Database zusammen mit dem Firebase Admin SDK als Server-Only-Back-End verwenden 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.

Cloud Firestore Security Rules testen

Mit dem Firebase-Emulator können Sie das Verhalten Ihrer App prüfen und Ihre Cloud Firestore Security Rules-Konfigurationen überprüfen. Verwenden Sie den Cloud Firestore-Emulator, um Einheitentests in einer lokalen Umgebung auszuführen und zu automatisieren, bevor Sie Änderungen bereitstellen.

Um Firebase Security Rules in der Firebase-Konsole schnell zu validieren, verwenden Sie den Firebase Rules Simulator.