Prüfen Sie Ihre Firebase Security Rules auf 26 häufige Fehler
Fügen Sie Ihre Firestore-Regeln, Firebase-Storage-Regeln oder Realtime-Database-Regeln ein. Der Check liest den Text und zeigt, welche Pfade jedem Lesen oder Schreiben erlauben.
Ergebnis
Das ist eine statische Analyse des eingefügten Textes. Sie sieht keine Custom Claims, kein App Check, nicht die Form der Daten und keine Regeln, die nie veröffentlicht wurden; die Note deckt nur ab, was die 26 Prüfungen lesen können.
Was dieser Check nicht sehen kann
Der Check liest nur den eingefügten Text. Er sieht keine Custom Claims, kein App Check, nicht die Form Ihrer Daten und keine Regeln, die nie veröffentlicht wurden. Ein sauberes Ergebnis heißt daher nicht, dass das Projekt sicher ist.
Alle 26 Prüfungen
| Prüfung | ID | Dienst | Schweregrad |
|---|---|---|---|
| Jeder kann in Firestore schreiben | fs-open-write | Firestore | Kritisch |
| Jeder kann aus Firestore lesen | fs-open-read | Firestore | Mittel |
| Ein rekursiver Wildcard-Match ist offen | fs-recursive-wildcard-open | Firestore | Kritisch |
| Test-Mode-Regeln mit Ablaufdatum | fs-test-mode-expiry | Firestore | Kritisch |
| Jeder angemeldete Nutzer kann schreiben | fs-auth-only-write | Firestore | Hoch |
| Jeder angemeldete Nutzer kann lesen | fs-auth-only-read | Firestore | Mittel |
| E-Mail wird ohne email_verified vertraut | fs-email-unverified | Firestore | Mittel |
| Rolle wird aus den Anfragedaten gelesen | fs-role-from-request | Firestore | Hoch |
| Eine breite Wildcard verdeckt strengere Regeln | fs-wildcard-shadow | Firestore | Hoch |
| Nutzer können ihre eigene Rolle schreiben (Heuristik) | fs-self-role-write | Firestore | Hoch |
| Schreiben akzeptiert beliebige Felder (Heuristik) | fs-write-no-field-guard | Firestore | Mittel |
| read ist nicht in get und list getrennt | fs-read-not-split | Firestore | Info |
| Kein ausdrückliches Default-Deny | fs-no-default-deny | Firestore | Info |
| Die Firestore-Regeln konnten nicht gelesen werden | fs-parse-error | Firestore | Info |
| Jeder kann Storage-Dateien lesen | st-open-read | Storage | Mittel |
| Jeder kann in Storage schreiben | st-open-write | Storage | Kritisch |
| Der Match auf {allPaths=**} ist offen | st-recursive-wildcard-open | Storage | Kritisch |
| Jeder angemeldete Nutzer kann in Storage schreiben | st-auth-only-write | Storage | Hoch |
| Die Storage-Regeln konnten nicht gelesen werden | st-parse-error | Storage | Info |
| Die ganze Datenbank ist für jeden lesbar | db-root-read-open | Realtime Database | Kritisch |
| Die ganze Datenbank ist für jeden beschreibbar | db-root-write-open | Realtime Database | Kritisch |
| Ein Knoten ist für jeden lesbar | db-open-read | Realtime Database | Mittel |
| Ein Knoten ist für jeden beschreibbar | db-open-write | Realtime Database | Hoch |
| Eine Regel am Kind wird vom Elternknoten überstimmt | db-cascade-override | Realtime Database | Hoch |
| Jeder angemeldete Nutzer kann die ganze Datenbank lesen oder schreiben | db-auth-only-root | Realtime Database | Hoch |
| Die Realtime-Database-Regeln konnten nicht gelesen werden | db-parse-error | Realtime Database | Info |
Fragen
Was prüft der Firebase-Regelcheck?
Er liest die Firebase Security Rules, die Sie für Firestore, Cloud Storage und die Realtime Database einfügen. Er sucht nach Regeln, die jedem Lesen oder Schreiben erlauben, nach Regeln, die nur einen angemeldeten Nutzer verlangen, nach Vertrauen in Client-Eingaben und ähnlichen Mustern.
Wird mein Regeltext gespeichert?
Nein. Die Regeln werden im Arbeitsspeicher im Netzwerk von Cloudflare verarbeitet und verworfen, sobald die Antwort gesendet ist. Mit dem Text wird nichts gespeichert oder protokolliert.
Wie viel kann ich einfügen?
Bis zu 48,000 Zeichen insgesamt über die drei Felder. Sind Ihre Regeln länger, fügen Sie den Teil ein, den Sie prüfen lassen möchten.
Warum kann eine öffentliche Leseregel in Ordnung sein?
Manche Daten sind für die Öffentlichkeit gedacht, etwa ein Produktkatalog oder Blogbeiträge. Bei Firestore und Storage zählt der Check einen Lesezugriff ohne Bedingung als mittleres Problem und zieht 10 Punkte ab, weil er nicht wissen kann, ob die Daten privat sind. Sind die Daten absichtlich öffentlich, können Sie diesen Abzug in Kauf nehmen. Nur an der Wurzel der Realtime Database bewertet er einen offenen Lesezugriff höher.
Was sind Test-Mode-Regeln?
Wenn Sie eine Firestore-Datenbank im Testmodus anlegen, schreibt die Konsole eine Regel, die bis zu einem Datum alles erlaubt, mit request.time. Bis zu diesem Datum kann jeder lesen und schreiben; danach wird alles abgelehnt und die App geht kaputt. Ersetzen Sie sie vor dem Start durch echte Bedingungen.
Wie wirken Realtime-Database-Regeln kaskadierend?
In der Realtime Database gilt eine Regel, die Zugriff gewährt, für alles darunter, und ein Kind kann sie nicht zurücknehmen. Eine strengere Regel an einem Kind unter einem offenen Elternknoten greift nie, deshalb meldet der Check sie.
Was bedeutet die Note?
Sie fasst nur zusammen, was die Prüfungen im eingefügten Text lesen können: eine Punktzahl aus 100 minus einem Abzug je fehlgeschlagener Prüfung, bestimmt vom schwersten Problem, das diese Prüfung fand, und jedes kritische Problem ergibt F. Ein mittlerer Punkt kann auch eine Heuristik sein, die Sie bittet, von Hand zu prüfen, weil der Text allein nicht zeigt, ob es ein echtes Problem ist. Ein A beweist nicht, dass das Projekt sicher ist, denn Custom Claims, App Check und die Daten selbst sind außer Reichweite.