// docs / baas security / firebase rules scanner
Firebase reglnaskanni: finndu opnar Firestore-, Realtime Database- og Storage-reglur
Firebase-forrit bregðast öryggi á einn samkvæman hátt: <code>allow read, write: if true;</code>-reglur skildar eftir frá test-mode-fljótstartinu, aldrei skipt út fyrir framleiðslu. AI-kóðunarverkfæri framleiða þessar reglur orðrétt úr skjölunardæmum og hvetja sjaldan þróunaraðilann til að herða þær. Þessi grein sýnir hvernig Firebase reglnaskanni greinir opnar reglur yfir Firestore, Realtime Database og Cloud Storage utan verkefnisins — og hvernig á að laga það sem hann finnur.
Hvernig skanninn finnur opnar Firebase-reglur
Firebase-þjónustur opna vel þekkt, fyrirsjáanleg URL-snið. Skanni án skilríkja getur kannað hvert og fylgst með hvort ókenndar lestur heppnist. FixVibe baas.firebase-rules-athugunin keyrir í þremur óháðum könnunum — einni á hverja Firebase-þjónustu:
- <strong>Firestore.</strong> The scanner extracts the project ID from the deployed app's bundle (it's in <code>firebase.initializeApp({ projectId: ... })</code>), then issues <code>GET https://firestore.googleapis.com/v1/projects/[project-id]/databases/(default)/documents/[collection]:listDocuments</code> against common collection names. A <code>200 OK</code> with documents in the response means <code>allow read</code> is permissive.
- Realtime Database. Skanninn kannar
https://[project-id]-default-rtdb.firebaseio.com/.json. Ef rótin er læsileg ókennt, er svarið allur gagnagrunnstréð sem JSON. Íhaldssamari prófun spyr.json?shallow=true, sem skilar aðeins topplaglyklum — niðurstaða í báðum tilvikum. - Cloud Storage. Skanninn spyr
https://firebasestorage.googleapis.com/v0/b/[project-id].appspot.com/o. Ef svarið listar skrárnöfn án auðkenningar, er fatan anon-listanleg. Listanleg geymsla er niðurstaða jafnvel þegar einstakar skráaniðurhalanir eru hafnaðar — árásarmenn telja fötuna upp til að finna getanleg skrárnöfn.
Hvernig test-mode-gildran lítur í raun út
Firebase fljótstartsskjölunin inniheldur einn af mest afrituðu reglnablokkum á internetinu:
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if true;
}
}
}Firebase bætti áður við sjálfvirku 30-daga útrunna á þessar reglur. Það breyttist: í dag standa reglurnar að eilífu nema þróunaraðilinn skipti þeim út. AI-kóðunarverkfæri — eftir að hafa þjálfað á árum skjölunar sem inniheldur test-mode-blokkina — gefa hana oft út orðrétt og segja þróunaraðilanum "þetta er öryggisreglan þín." Það er hún ekki.
Önnur afbrigði sem birtast í framleiðslu en eru jafn leyfileg:
// future-date variant — equivalent to "if true" allow read, write: if request.time < timestamp.date(2099, 1, 1); // authenticated-user variant — any signed-in user reads and writes anything allow read: if true; allow write: if request.auth != null; // any-auth variant — any signed-in user owns every document allow read, write: if request.auth != null;
- Framtíðar-tímastimpilsafbrigði: regla sem leyfir allt þar til dagsetning langt í framtíðinni. Rennur aldrei í raun út (sjá hápunktaða blokkina hér að ofan).
allow read: if true; allow write: if request.auth != null;— opinber lestur, sérhver auðkenndur notandi getur skrifað.allow read, write: if request.auth != null;— hver innskráður notandi getur lesið eða skrifað hvaða skjal sem er, þar á meðal gögn annarra notenda.
Hvað á að gera þegar skanninn finnur opna reglu
Opnar Firebase-reglur eru keyrsluneyðarástand. Lagfæringin er á sama sniði yfir allar þrjár þjónusturnar: afmarkaðu hverja reglu við request.auth.uid gegn skýrum eigandareit. Hver þjónusta hefur eigin reglnasetningarfræði:
Firestore
match /users/{userId} { allow read, write: if request.auth != null && request.auth.uid == userId; }. Slóðarsegmentbindingin {userId} verður eina skjalið sem notandinn getur snert.
match /users/{userId} {
allow read, write: if request.auth != null
&& request.auth.uid == userId;
}Realtime Database
<code>{ "rules": { "users": { "$uid": { ".read": "$uid === auth.uid", ".write": "$uid === auth.uid" } } } }</code>. The <code>$uid</code> wildcard captures the path segment for comparison.
{
"rules": {
"users": {
"$uid": {
".read": "$uid === auth.uid",
".write": "$uid === auth.uid"
}
}
}
}Cloud Storage
service firebase.storage { match /b/{bucket}/o { match /users/{userId}/{allPaths=**} { allow read, write: if request.auth.uid == userId; } } }. Sáttmáli: geymdu skrár undir users/[uid]/[filename] og láttu slóðina framfylgja eignarhaldi.
service firebase.storage {
match /b/{bucket}/o {
match /users/{userId}/{allPaths=**} {
allow read, write: if request.auth.uid == userId;
}
}
}Útgefðu reglur í gegnum Firebase CLI: firebase deploy --only firestore:rules, firebase deploy --only database, firebase deploy --only storage. Staðfestu að nýju reglurnar séu í framleiðslu með því að endurkeyra FixVibe-skönnunina — baas.firebase-rules-niðurstaðan ætti að hverfa.
firebase deploy --only firestore:rules
firebase deploy --only database
firebase deploy --only storageHvernig þetta ber saman við innbyggð Firebase-verkfæri
Firebase Console sýnir þér núverandi reglur en endurskoðar þær ekki gegn keyrsluhegðun. Firebase Rules-hermir leyfir þér að prófa reglnarökfræði gegn tilbúnum beiðnum — gagnlegt en staðbundið. Hvorugt verkfærið segir þér hvað framleiðslureglurnar þínar í raun skila ókenndum árásarmanni á opinbera internetinu. Utanaðkomandi skanni eins og FixVibe (eða Burp Suite með handvirkri stillingu) er það eina sem kannar úr sömu átt og árásarmaður myndi gera. Eigin App Check Google mildar misnotkun en kemur ekki í stað rétt afmarkaðra reglna.
Algengar spurningar
Les eða breytir skanninn Firestore-gögnunum mínum?
Hlutlausar skannanir gefa út í mesta lagi eina ókennda lestur á hverja þjónustu til að staðfesta hvort reglur leyfi það. Skanninn skráir svarsnið og tilvist gagna — hann síðunúmerar ekki, telur ekki upp skjöl og skrifar ekki. Skrifkannanir eru aðgangsstýrðar með staðfestu lénseignarhaldi og keyra aldrei gegn óstaðfestum markmiðum.
Hvað ef Firebase-verkefnið mitt notar App Check?
App Check hafnar óauðkenndum beiðnum með 403. Skanni án App Check-táknis mun sjá 403 á hverri könnun — sem er rétt niðurstaða. App Check er ekki staðgengill fyrir réttar reglur (stolið App Check-tákn ásamt opinni reglu lekur enn gögnum), en það lokar fyrir tækifærissinnaðar utanaðkomandi skannanir.
Getur skanninn greint hlutarangstillingar reglna (lestur opinn, skrif lokuð)?
Já — hver regla (allow read, allow write) er könnuð sérstaklega. Lestrar-eingöngu könnun sem heppnast með 200 OK tilkynnir opna-lestrar-niðurstöðu jafnvel þó að skrif séu hafnað. Þær tvær niðurstöður eru aðskildar: gagnaútdráttur og gagnameðferð eru aðskildar áhættur.
Virkar þetta fyrir Firebase-forrit sett upp undir sérstöku léni?
Já. Skanninn dregur Firebase verkefnis-ID-ið úr uppsetta knippinu, ekki úr léninu. Sérstök lén, app.web.app-undirlén og sjálfhýstu Firebase-forrit virka öll á sama hátt svo lengi sem JavaScript-knippið er aðgengilegt.
Næstu skref
Keyrðu ókeypis FixVibe-skönnun gegn framleiðslu-URL þínum — baas.firebase-rules-athugunin er á öllum áskriftum og merkir opnar reglur yfir Firestore, Realtime Database og Cloud Storage. Fyrir dýpri útskýringu á allow read, write: if true-mynstrinu sérstaklega, sjáðu Firebase allow read, write: if true útskýrt. Fyrir regnhlífaryfirlit yfir Supabase, Firebase, Clerk og Auth0, lestu BaaS-rangstillingaskanni.
