Skontrolujte bezpečnostné pravidlá Firebase podľa 26 častých chýb
Vložte bezpečnostné pravidlá Firestore, pravidlá Firebase Storage alebo pravidlá Realtime Database. Kontrola prečíta text a ukáže, ktoré cesty umožňujú komukoľvek čítať alebo zapisovať.
Výsledok
Ide o statickú analýzu vloženého textu. Nevidí vlastné claims, App Check, tvar dát ani pravidlá, ktoré nikdy neboli nasadené; známka pokrýva len to, čo vie prečítať 26 kontrol.
Čo táto kontrola nevidí
Kontrola číta iba vložený text. Nevidí vlastné claims, App Check, tvar vašich dát ani pravidlá, ktoré nikdy neboli nasadené, takže čistý výsledok neznamená, že je projekt bezpečný.
Všetkých 26 kontrol
| Kontrola | ID | Služba | Závažnosť |
|---|---|---|---|
| Ktokoľvek môže zapisovať do Firestore | fs-open-write | Firestore | Kritická |
| Ktokoľvek môže čítať z Firestore | fs-open-read | Firestore | Stredná |
| Rekurzívny zástupný match je otvorený | fs-recursive-wildcard-open | Firestore | Kritická |
| Pravidlá testovacieho režimu s dátumom vypršania | fs-test-mode-expiry | Firestore | Kritická |
| Zapisovať môže každý prihlásený používateľ | fs-auth-only-write | Firestore | Vysoká |
| Čítať môže každý prihlásený používateľ | fs-auth-only-read | Firestore | Stredná |
| E-mailu sa verí bez email_verified | fs-email-unverified | Firestore | Stredná |
| Rola sa číta z dát požiadavky | fs-role-from-request | Firestore | Vysoká |
| Široký zástupný match skrýva prísnejšie pravidlá | fs-wildcard-shadow | Firestore | Vysoká |
| Používatelia si môžu zapísať vlastnú rolu (heuristika) | fs-self-role-write | Firestore | Vysoká |
| Zápisy prijímajú ľubovoľné polia (heuristika) | fs-write-no-field-guard | Firestore | Stredná |
| read nie je rozdelený na get a list | fs-read-not-split | Firestore | Info |
| Chýba výslovné predvolené zamietnutie | fs-no-default-deny | Firestore | Info |
| Pravidlá Firestore sa nepodarilo prečítať | fs-parse-error | Firestore | Info |
| Ktokoľvek môže čítať súbory v Storage | st-open-read | Storage | Stredná |
| Ktokoľvek môže zapisovať do Storage | st-open-write | Storage | Kritická |
| Match {allPaths=**} je otvorený | st-recursive-wildcard-open | Storage | Kritická |
| Zapisovať do Storage môže každý prihlásený používateľ | st-auth-only-write | Storage | Vysoká |
| Pravidlá Storage sa nepodarilo prečítať | st-parse-error | Storage | Info |
| Celú databázu môže čítať ktokoľvek | db-root-read-open | Realtime Database | Kritická |
| Do celej databázy môže zapisovať ktokoľvek | db-root-write-open | Realtime Database | Kritická |
| Uzol môže čítať ktokoľvek | db-open-read | Realtime Database | Stredná |
| Do uzla môže zapisovať ktokoľvek | db-open-write | Realtime Database | Vysoká |
| Pravidlo potomka prebíja rodič | db-cascade-override | Realtime Database | Vysoká |
| Ktorýkoľvek prihlásený používateľ môže čítať alebo zapisovať celú databázu | db-auth-only-root | Realtime Database | Vysoká |
| Pravidlá Realtime Database sa nepodarilo prečítať | db-parse-error | Realtime Database | Info |
Otázky
Na čo sa kontrola pravidiel Firebase pozerá?
Číta bezpečnostné pravidlá Firebase, ktoré vložíte pre Firestore, Cloud Storage a Realtime Database, a hľadá pravidlá, ktoré umožňujú komukoľvek čítať alebo zapisovať, pravidlá vyžadujúce iba prihláseného používateľa, dôveru vo vstup z klienta a podobné vzory.
Ukladá sa text mojich pravidiel?
Nie. Pravidlá sa spracujú v pamäti v sieti Cloudflare a po odoslaní odpovede sa zahodia. Spolu s textom sa nič neukladá ani nezaznamenáva.
Koľko toho môžem vložiť?
Spolu až 48,000 znakov vo všetkých troch poliach. Ak sú vaše pravidlá dlhšie, vložte časť, ktorú chcete skontrolovať.
Prečo môže byť verejné čítanie v poriadku?
Niektoré dáta sú verejné zámerne, napríklad katalóg produktov alebo články na blogu. Pri Firestore a Storage kontrola počíta čítanie bez podmienky ako stredný problém a strhne 10 bodov, pretože nemôže vedieť, či sú dáta súkromné. Ak sú dáta verejné zámerne, túto cenu môžete prijať. Iba v koreni Realtime Database hodnotí otvorené čítanie ako závažnejšie.
Čo sú pravidlá testovacieho režimu?
Keď vytvoríte databázu Firestore v testovacom režime, konzola zapíše pravidlo, ktoré do určitého dátumu povoľuje všetko, pomocou request.time. Do toho dátumu môže ktokoľvek čítať aj zapisovať; potom je všetko zakázané a aplikácia prestane fungovať. Pred spustením ho nahraďte skutočnými podmienkami.
Ako sa v Realtime Database dedia pravidlá?
V Realtime Database platí pravidlo, ktoré udeľuje prístup, pre všetko pod ním a potomok ho nemôže vziať späť. Prísnejšie pravidlo na potomkovi pod povoľným rodičom sa nikdy neuplatní, preto ho kontrola hlási.
Čo znamená známka?
Zhŕňa len to, čo kontroly vedia prečítať vo vloženom texte: skóre zo 100 mínus trest za každú neúspešnú kontrolu, určený najzávažnejším problémom, ktorý táto kontrola našla, a akýkoľvek kritický problém je F. Stredná položka môže byť aj heuristika, ktorá žiada o ručné overenie, pretože samotný text neukáže, či ide o skutočný problém. Známka A nedokazuje, že je projekt zabezpečený, pretože vlastné claims, App Check aj samotné dáta sú mimo dosahu.