FixVibe

// docs / baas security / firebase rules scanner

Firebase rules scanner៖ រកច្បាប់ Firestore, Realtime Database និង Storage បើកចំហ

កម្មវិធី Firebase បរាជ័យសុវត្ថិភាពតាមរបៀបជាប់លាប់មួយ៖ ច្បាប់ <code>allow read, write: if true;</code> ដែលនៅសល់ពី quickstart test-mode, មិនដែលត្រូវបានជំនួសមុនផលិតកម្ម។ ឧបករណ៍សរសេរកូដ AI បង្កើតច្បាប់ទាំងនេះច្បាស់ៗពីឧទាហរណ៍ documentation និងកម្រនឹងជំរុញឱ្យអ្នកអភិវឌ្ឍន៍ពង្រឹងពួកវា។ អត្ថបទនេះបង្ហាញពីរបៀបដែល Firebase rules scanner រកឃើញច្បាប់បើកចំហនៅទូទាំង Firestore, Realtime Database និង Cloud Storage ពីខាងក្រៅ project — និងរបៀបជួសជុលអ្វីដែលវារកឃើញ។

របៀបដែល scanner រកច្បាប់ Firebase បើកចំហ

សេវាកម្ម Firebase បង្ហាញរូបរាង URL ដែលគេស្គាល់ យាងអាចទាយបាន។ Scanner ដែលគ្មាន credential អាចត្រួតពិនិត្យសេវាកម្មនីមួយៗ និងសង្កេតថាការអាន anonymous ជោគជ័យ ឬអត់។ ការត្រួតពិនិត្យ FixVibe baas.firebase-rules ដំណើរការក្នុងការត្រួតពិនិត្យបីដោយឯករាជ្យ — មួយក្នុងសេវាកម្ម Firebase នីមួយៗ៖

  • <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។ Scanner ត្រួតពិនិត្យ https://[project-id]-default-rtdb.firebaseio.com/.json។ បើ root អាចអានបាន anonymous, response គឺជាដើមឈើ database ទាំងមូលជា JSON។ ការសាកល្បងបន្ថែមប្រុងប្រយ័ត្ន query .json?shallow=true, ដែលត្រឡប់តែ key កម្រិតខ្ពស់ប៉ុណ្ណោះ — finding ដែរក្នុងករណីណាក៏ដោយ។
  • Cloud Storage។ Scanner query https://firebasestorage.googleapis.com/v0/b/[project-id].appspot.com/o។ បើ response រាយឈ្មោះឯកសារដោយគ្មាន authentication, bucket អាចរាយ anon។ Storage ដែលអាចរាយគឺជា finding សូម្បីពេលការទាញយកឯកសារផ្ដាច់មុខត្រូវបានបដិសេធ — អ្នកវាយប្រហារ enumerate bucket ដើម្បីរកឈ្មោះឯកសារដែលអាចទាយបាន។

ប្រសិទ្ធភាពពិតប្រាកដនៃ test-mode footgun

Documentation quickstart របស់ Firebase រួមមាន rule block មួយក្នុងចំណោម block ដែលគេចម្លងច្រើនបំផុតនៅលើអ៊ីនធឺណិត៖

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

Firebase ធ្លាប់បន្ថែមការផុតកំណត់ 30 ថ្ងៃដោយស្វ័យប្រវត្តិលើច្បាប់ទាំងនេះ។ នោះបានផ្លាស់ប្ដូរ៖ បច្ចុប្បន្នច្បាប់នៅជារៀងរហូតលុះត្រាតែអ្នកអភិវឌ្ឍន៍ជំនួសវា។ ឧបករណ៍សរសេរកូដ AI — ដោយបានបង្វឹកលើ documentation រាប់ឆ្នាំដែលរួមមាន test-mode block — ច្រើនបញ្ចេញវាច្បាស់ៗ និងប្រាប់អ្នកអភិវឌ្ឍន៍ "នេះគឺជាច្បាប់សុវត្ថិភាពរបស់អ្នក។" វាមិនមែនទេ។

Variant ផ្សេងទៀតដែលលេចឡើងនៅក្នុងផលិតកម្ម តែមានការអនុញ្ញាតស្មើគ្នា៖

firebase
// 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;
  • Variant timestamp អនាគត៖ ច្បាប់ដែលអនុញ្ញាតគ្រប់យ៉ាងរហូតដល់ថ្ងៃឆ្ងាយនៅក្នុងអនាគត។ មិនដែលផុតកំណត់ប្រកបដោយប្រសិទ្ធភាព (សូមមើល block ដែលបង្ហាញពន្លឺខាងលើ)។
  • allow read: if true; allow write: if request.auth != null; — អានសាធារណៈ, អ្នកប្រើ authenticated ណាមួយអាចសរសេរ។
  • allow read, write: if request.auth != null; — អ្នកប្រើដែលចូលណាមួយអាចអាន ឬសរសេរឯកសារណាមួយ រួមទាំងទិន្នន័យរបស់អ្នកប្រើផ្សេង។

អ្វីដែលត្រូវធ្វើនៅពេល scanner រកឃើញច្បាប់បើកចំហ

ច្បាប់ Firebase បើកចំហគឺជាគ្រោះមហន្តរាយ runtime។ ការជួសជុលគឺមានរូបរាងដូចគ្នានៅទូទាំងសេវាកម្មទាំងបី៖ កំណត់ scope រាល់ច្បាប់ទៅ request.auth.uid ប្រឆាំងនឹង field ម្ចាស់ច្បាស់លាស់។ សេវាកម្មនីមួយៗមាន syntax ច្បាប់ផ្ទាល់របស់វា៖

Firestore

match /users/{userId} { allow read, write: if request.auth != null && request.auth.uid == userId; }។ ការចង path-segment {userId} ក្លាយជាឯកសារតែមួយដែលអ្នកប្រើអាចប៉ះ។

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

json
{
  "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; } } }។ អនុសញ្ញា៖ រក្សាឯកសារក្រោម users/[uid]/[filename] និងអនុញ្ញាតផ្លូវអនុវត្តភាពជាម្ចាស់។

firebase
service firebase.storage {
  match /b/{bucket}/o {
    match /users/{userId}/{allPaths=**} {
      allow read, write: if request.auth.uid == userId;
    }
  }
}

Deploy ច្បាប់តាមរយៈ Firebase CLI៖ firebase deploy --only firestore:rules, firebase deploy --only database, firebase deploy --only storage។ ផ្ទៀងផ្ទាត់ថាច្បាប់ថ្មីនៅក្នុងផលិតកម្មដោយដំណើរការ FixVibe scan ឡើងវិញ — finding baas.firebase-rules គួរត្រូវលុបបំបាត់។

bash
firebase deploy --only firestore:rules
firebase deploy --only database
firebase deploy --only storage

របៀបនេះប្រៀបធៀបជាមួយឧបករណ៍ Firebase ដែលមានស្រាប់

Firebase Console បង្ហាញអ្នកនូវច្បាប់បច្ចុប្បន្ន តែមិនត្រួតពិនិត្យពួកវាប្រឆាំងនឹងឥរិយាបថ runtime ឡើយ។ Firebase Rules simulator អនុញ្ញាតឱ្យអ្នកសាកល្បងតក្កច្បាប់ប្រឆាំងនឹង request សំយោគ — មានប្រយោជន៍ តែជាមូលដ្ឋាន។ ឧបករណ៍មួយណាក៏មិនប្រាប់អ្នកថាច្បាប់ផលិតកម្មរបស់អ្នកត្រឡប់អ្វីពិតប្រាកដទៅអ្នកវាយប្រហារ anonymous នៅលើអ៊ីនធឺណិតសាធារណៈ។ Scanner ខាងក្រៅដូចជា FixVibe (ឬ Burp Suite ជាមួយការកំណត់រចនាសម្ព័ន្ធដោយដៃ) គឺជាអ្វីដែលត្រួតពិនិត្យពីមុំដូចគ្នាដែលអ្នកវាយប្រហារនឹង។ App Check របស់ Google កាត់បន្ថយការរំលោភ តែមិនជំនួសច្បាប់ដែល scope ត្រឹមត្រូវឡើយ។

សំណួរសួរញឹកញាប់

តើ scanner អាន ឬកែប្រែទិន្នន័យ Firestore របស់ខ្ញុំទេ?

Passive scan ផ្ញើច្រើនបំផុតមួយការអាន anonymous ក្នុងសេវាកម្មនីមួយៗដើម្បីបញ្ជាក់ថាច្បាប់អនុញ្ញាតវាឬអត់។ Scanner កត់ត្រារូបរាង response និងវត្តមាននៃទិន្នន័យ — វាមិន paginate, មិន enumerate ឯកសារ និងមិនសរសេរឡើយ។ Probe សរសេរត្រូវបានរារាំងនៅពីក្រោយការផ្ទៀងផ្ទាត់ភាពជាម្ចាស់ domain ហើយមិនដែលដំណើរការប្រឆាំងនឹង target ដែលមិនបានផ្ទៀងផ្ទាត់ឡើយ។

ចុះបើ Firebase project របស់ខ្ញុំប្រើ App Check?

App Check បដិសេធ request ដែលមិនបាន authenticate ជាមួយ 403។ Scanner ដែលគ្មាន token App Check នឹងឃើញ 403 លើ probe រាល់ — ដែលជាលទ្ធផលត្រឹមត្រូវ។ App Check មិនមែនជាការជំនួសសម្រាប់ភាពត្រឹមត្រូវនៃច្បាប់ឡើយ (token App Check ដែលលួច បូកនឹងច្បាប់បើកចំហនៅតែលេចធ្លាយទិន្នន័យ), តែវារារាំង scan ខាងក្រៅឱកាសនិយម។

តើ scanner អាចរកឃើញការកំណត់រចនាសម្ព័ន្ធច្បាប់មិនពេញលេញ (អានបើក, សរសេរបិទ) ទេ?

បាទ/ចាស — ច្បាប់នីមួយៗ (allow read, allow write) ត្រូវបានត្រួតពិនិត្យដោយឡែកៗ។ Probe អានតែប៉ុណ្ណោះដែលជោគជ័យជាមួយ 200 OK រាយការណ៍ finding អានបើកសូម្បីពេលការសរសេរត្រូវបានបដិសេធ។ Finding ទាំងពីរគឺផ្សេងគ្នា៖ data exfiltration និង data manipulation គឺជាហានិភ័យដាច់ដោយឡែក។

តើនេះដំណើរការសម្រាប់កម្មវិធី Firebase ដែល deploy ក្រោម domain custom ទេ?

បាទ/ចាស។ Scanner ស្រង់ Firebase project ID ពី bundle ដែលបាន deploy មិនមែនពី domain ឡើយ។ Domain custom, subdomain app.web.app និងកម្មវិធី Firebase self-hosted ដំណើរការដូចគ្នាដរាបណា JavaScript bundle អាចទាក់ទងបាន។

ជំហានបន្ទាប់

ដំណើរការ FixVibe scan ឥតគិតថ្លៃប្រឆាំងនឹង URL ផលិតកម្មរបស់អ្នក — ការត្រួតពិនិត្យ baas.firebase-rules ship លើគ្រប់ plan និងសម្គាល់ច្បាប់បើកចំហនៅទូទាំង Firestore, Realtime Database និង Cloud Storage។ សម្រាប់ការពន្យល់ស៊ីជម្រៅអំពីលំនាំ allow read, write: if true ជាក់លាក់, សូមមើល Firebase allow read, write: if true ពន្យល់។ សម្រាប់ទិដ្ឋភាពទូទៅនៅទូទាំង Supabase, Firebase, Clerk និង Auth0, សូមអាន BaaS misconfiguration scanner

// scan ផ្ទៃ baas របស់អ្នក

រកតារាងបើកចំហមុនពេលនរណាម្នាក់ផ្សេងទៀតរកឃើញ។

បញ្ចូល URL ផលិតកម្ម។ FixVibe រាប់ផ្គូផ្គង BaaS provider ដែលកម្មវិធីរបស់អ្នកនិយាយជាមួយ, fingerprint endpoint សាធារណៈរបស់ពួកគេ និងរាយការណ៍អ្វីដែល client មិនបាន authenticate អាចអាន ឬសរសេរ។ ឥតគិតថ្លៃ, គ្មានការដំឡើង, គ្មានកាត។

  • កម្រិតឥតគិតថ្លៃ — 3 scans/ខែ, គ្មានកាតចុះឈ្មោះ។
  • BaaS fingerprinting បែប passive — មិនត្រូវការការផ្ទៀងផ្ទាត់ domain។
  • Supabase, Firebase, Clerk, Auth0, Appwrite និងច្រើនទៀត។
  • AI fix prompt លើ finding នីមួយៗ — បិទភ្ជាប់ត្រឡប់ទៅក្នុង Cursor / Claude Code។
ដំណើរការ BaaS scan ឥតគិតថ្លៃ

មិនត្រូវការការចុះឈ្មោះ

Firebase rules scanner៖ រកច្បាប់ Firestore, Realtime Database និង Storage បើកចំហ — Docs · FixVibe