// docs / baas security / firebase if-true explainer
Firebase allow read, write: if true eksplike: sa li fè ak kijan pou ranje li
<code>allow read, write: if true;</code> se yon sèl move konfigirasyon Firebase ki pi komen nan pwodiksyon. Li se default mòd-tès la ke Firebase Console sijere lè ou kreye yon nouvo baz done, règ ke zouti kodaj IA re-jenere soti nan dokimantasyon, ak règ ki louvri tout baz done Firestore ou bay nenpòt moun sou entènèt la. Atik sa a eksplike sentaks la presizeman, montre sa yon atakè wè lè règ sa a an dirèk, epi ba ou kat ranplasman pwogresivman-pi-strik ki adapte ka itilizasyon diferan.
Sentaks la, liy pa liy
Yon dokiman règ Firestore mòd-tès konplè se sis liy:
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if true;
}
}
}Dekode:
rules_version = '2';chwazi motè règ v2 (aktyèl). Ansyen règ v1 yo demode.service cloud.firestorepòte blòk la sou Firestore. Realtime Database itilize yon sentaks JSON diferan; Cloud Storage itilizeservice firebase.storage.match /databases/{database}/documentsmare baz done espesyal(default)la (pifò pwojè gen sèlman youn).match /{document=**}se yon kat rekursif.**a koresponn ak nenpòt chemen nenpòt pwofondè. Konbine ak{document}, sa kapte chak dokiman nan chak koleksyon — yon sèl klauz match ki gouvène tout baz done a.allow read, write: if true;se kò règ la. Tou dereadakwritepèmèt; kondisyon anif truese, byen, toujou vre.readkouvri operasyongetaklist;writekouvricreate,update, akdelete.
Efè nèt: nenpòt kliyan ak ID pwojè Firebase a ak bon SDK kapab li oswa ekri nenpòt dokiman nan nenpòt koleksyon. Otantifikasyon pa nesesè. Limit to pa ranfòse.
Poukisa Firebase voye sa kòm default
Firebase vle w ap kode nan premye 30 segonn yo apre w kreye yon pwojè. Altènatif la — fè ou ekri yon règ kòrèk anvan nenpòt lekti oswa ekriti mache — ta bloke bòdaj. Konsa Console nan ofri de opsyon lè ou kreye yon baz done: Mòd pwodiksyon (refize tout bagay, ou ekri règ yo) oswa Mòd tès (pèmèt tout bagay pou 30 jou). Pifò devlopè klike mòd tès, lè sa a bliye revizite. Ansyen pwojè te gen kwonomet 30-jou la; pwojè aktyèl yo gen yon règ if true endefini san ekspirasyon otomatik.
Pwoblèm estriktirèl la: zouti kodaj IA antrene sou dokimantasyon, leson patikilye, ak repons Stack Overflow ki montre règ mòd-tès. Lè ou mande Cursor oswa Claude Code "kijan mwen mete Firebase," repons lan souvan gen ladan blòk allow read, write: if true egzak la tankou si li ta règ pwodiksyon an. IA a pa konnen — epi pa envite konnen — ke règ sa a pa ansekirite pou pwodiksyon.
Sa yon atakè wè
Konkrètman, yon atakè ki konnen ID pwojè Firebase ou (ekstraktib soti nan nenpòt pakèt aplikasyon deplwaye nan 30 segonn) epi ki mache sa ki annapre yo kapab liste chak dokiman nan chak koleksyon:
Yon sèl demand curl san otantifikasyon ase pou enimere chak koleksyon. Gade blòk ki mete-aksan anba a.
curl 'https://firestore.googleapis.com/v1/projects/[project-id]/databases/(default)/documents:listCollectionIds' \
-X POST \
-H 'Content-Type: application/json' \
-d '{}'Repons lan se lis konplè koleksyon nivo-tèt yo. Pou chak koleksyon, yon dezyèm demand retounen dokiman. Pa gen limit to sou chemen sa a paske règ if true aksèpte trafik anonim. Nou wè baz done Firebase ak milyon dokiman enimere nan mwens pase yon èdtan.
Sou chemen ekriti a: yon sèl POST ak {fields} kreye yon nouvo dokiman. Atakè kapab kontamine koleksyon ou ak fatra, defigire paj devan-itilizatè ki li nan Firestore, oswa itilize baz done ou kòm yon koutye mesaj gratis — bòdwo itilizasyon ou pike, ou envestige, bòdwo a eksplike pwoblèm la.
Kat ranplasman ki ansekirite-pwodiksyon
Chwazi ranplasman ki koresponn ak modèl done aplikasyon ou. Kat yo tout sipoze ou gen otantifikasyon itilizatè (Firebase Auth oswa nenpòt founisè ki bay yon jeton ID Firebase):
Opsyon 1: Dokiman pwopriyete-itilizatè
Modèl SaaS ki pi komen. Dokiman viv anba /users/{userId}/... epi sèlman pwopriyetè a kapab manyen yo. match /users/{userId}/{document=**} { allow read, write: if request.auth != null && request.auth.uid == userId; }
match /users/{userId}/{document=**} {
allow read, write: if request.auth != null
&& request.auth.uid == userId;
}Opsyon 2: Chan pwopriyetè sou chak dokiman
Lè dokiman yo viv nan koleksyon plat (pa nich anba ID itilizatè), estoke yon chan owner_uid epi tcheke li. match /posts/{postId} { allow read: if resource.data.public == true || resource.data.owner_uid == request.auth.uid; allow write: if request.auth.uid == resource.data.owner_uid; }
match /posts/{postId} {
allow read: if resource.data.public == true
|| resource.data.owner_uid == request.auth.uid;
allow write: if request.auth.uid == resource.data.owner_uid;
}Opsyon 3: Izolasyon org milti-lokatè
Pou SaaS B2B ak done pòte-org. Estoke yon chan org_id sou chak dokiman epi tcheke li kont reklamasyon koutim itilizatè a. allow read, write: if request.auth.token.org_id == resource.data.org_id;. Mande mete reklamasyon koutim nan pandan enskripsyon via Firebase Admin SDK.
allow read, write: if request.auth.token.org_id == resource.data.org_id;
Opsyon 4: Kontni piblik lekti-sèlman
Pou kontni maketing, pwofil piblik, katalòg pwodwi — nenpòt sa ki vrèman piblik-lekti men administratè-sèlman-ekriti. match /products/{productId} { allow read: if true; allow write: if request.auth.token.admin == true; }. Reklamasyon koutim admin mete sou kont administratè sèlman.
match /products/{productId} {
allow read: if true;
allow write: if request.auth.token.admin == true;
}Demand odit rapid
Anvan ranje, tcheke èske if true reyèlman an dirèk. Louvri Firebase Console → Firestore → Rules epi rechèche pou if true. Si ou jwenn li nenpòt kote deyò yon kòmantè, ou gen yon dekouvèt règ-louvri. Similatè Règ la nan menm UI a kite ou repete demand atakè a lokalman — kole yon anonim GET /users/somebody epi konfime similatè a retounen Allowed.
Konfimasyon ekstèn: lanse yon eskanè FixVibe kont URL pwodiksyon ou. Tcheke baas.firebase-rules sond règ Firestore, Realtime Database, ak Storage ou epi rapòte menm dekouvèt yon atakè ta dekouvri — endepandan sa Firebase Console montre.
Kesyon ki poze souvan
Ki diferans ant <code>if true</code> ak <code>if request.auth != null</code>?
if true pèmèt aksè anonim — nenpòt moun sou entènèt la. if request.auth != null mande nenpòt itilizatè konekte, ki pi bon men toujou move: nenpòt itilizatè aplikasyon ou kapab li done chak lòt itilizatè. Règ pwodiksyon dwe pòte sou itilizatè espesifik la oswa org via request.auth.uid == resource.data.owner_uid oswa menm jan an.
Èske Firebase otomatikman fè règ <code>if true</code> ekspire?
Ansyen pwojè (pre-2023) te gen yon kwonomet 30-jou ki konvèti règ if true yo nan if false. Pwojè aktyèl yo pa — règ la pèsiste endefiniman jiskaske manyèl ranplase. Si ou kreye pwojè ou anvan 2023 epi règ ou yo sanble byen, double-tcheke: kwonomet la kapab deja te chanje yo nan if false, ki bloke pwòp aplikasyon ou.
Èske mwen kapab itilize yon tcheke orodataj dat-fiti kòm filè sekirite?
Non — yon kondisyon orodataj pa yon kontwòl sekirite. Li fè règ louvri a ekspire sou yon dat fiti, ki vle di jiskaske dat sa a atakè gen aksè konplè. Epi w ap bliye dat la. Ranplase if true ak yon règ pòte-auth, pa yon limit-tan.
Sa k ap pase si aplikasyon mwen reyèlman piblik-lekti (blog, katalòg pwodwi)?
Lè sa a eksplisitman ekri allow read: if true; allow write: if false; sou koleksyon piblik la sèlman — pa sou chak koleksyon nan baz done ou. Itilize yon klauz match separe pa koleksyon epi pa janm itilize kat rekursif {document=**} sou règ ki kapab ekri.
Etap pwochèn
Lanse yon eskanè FixVibe kont URL pwodiksyon ou — tcheke baas.firebase-rules konfime èske if true aktyèlman eksplwatab depi entènèt piblik la. Pou mekanik eskanè a ak deteksyon paralèl pou Realtime Database ak Storage, gade Eskanè règ Firebase. Pou klas ekivalan move konfigirasyon sou Supabase, li Eskanè RLS Supabase.
