FixVibe

// docs / baas security / firebase rules scanner

Firebase kuralları tarayıcısı: açık Firestore, Realtime Database ve Storage kurallarını bulun

Firebase uygulamaları tutarlı bir şekilde güvenlikte başarısız olur: test-modu hızlı başlangıcından kalan, üretime geçmeden önce hiç değiştirilmemiş <code>allow read, write: if true;</code> kuralları. Yapay zeka kodlama araçları bu kuralları kelime kelime dokümantasyon örneklerinden üretir ve geliştiriciyi sertleştirmeye nadiren teşvik eder. Bu makale, bir Firebase kuralları tarayıcısının Firestore, Realtime Database ve Cloud Storage'da açık kuralları proje dışından nasıl tespit ettiğini — ve bulduklarını nasıl düzelteceğinizi gösterir.

Tarayıcı açık Firebase kurallarını nasıl bulur

Firebase hizmetleri iyi bilinen, tahmin edilebilir URL şekilleri sunar. Kimlik bilgisi olmayan bir tarayıcı her birini sondalayabilir ve anonim okumaların başarılı olup olmadığını gözlemleyebilir. FixVibe'ın baas.firebase-rules kontrolü üç bağımsız sondajda çalışır — her Firebase hizmeti için bir tane:

  • <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. Tarayıcı https://[project-id]-default-rtdb.firebaseio.com/.json'u sondalar. Kök anonim olarak okunabiliyorsa, yanıt JSON olarak tüm veritabanı ağacıdır. Daha tutucu bir test .json?shallow=true sorgular, yalnızca üst düzey anahtarları döner — her iki durumda da bir bulgu.
  • Cloud Storage. Tarayıcı https://firebasestorage.googleapis.com/v0/b/[project-id].appspot.com/o'yu sorgular. Yanıt dosya adlarını kimlik doğrulaması olmadan listeliyorsa, bucket anon-listelenebilirdir. Bireysel dosya indirmeleri reddedilse bile listelenebilir storage bir bulgudur — saldırganlar tahmin edilebilir dosya adlarını bulmak için bucket'ı sıralar.

Test-modu tetiği aslında nasıl görünür

Firebase'in hızlı başlangıç dokümantasyonu, internetteki en çok kopyalanan kural bloklarından birini içerir:

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

Firebase eskiden bu kurallara 30 günlük otomatik bir son kullanma tarihi eklerdi. Bu değişti: bugün kurallar, geliştirici onları değiştirene kadar sonsuza kadar kalır. Yapay zeka kodlama araçları — test-modu bloğunu içeren yıllarca süren dokümantasyon üzerinde eğitildikleri için — bunu sıklıkla kelime kelime yayınlar ve geliştiriciye "bu sizin güvenlik kuralınız" der. Değildir.

Üretimde görünen ama eşit derecede müsamahakar olan diğer varyantlar:

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;
  • Gelecek-zaman-damgası varyantı: uzak bir tarihe kadar her şeye izin veren bir kural. Etkili olarak hiçbir zaman sona ermez (yukarıdaki vurgulanan bloğa bakın).
  • allow read: if true; allow write: if request.auth != null; — public okumalar, kimliği doğrulanmış herhangi bir kullanıcı yazabilir.
  • allow read, write: if request.auth != null; — oturum açmış herhangi bir kullanıcı, diğer kullanıcıların verileri dahil herhangi bir belgeyi okuyabilir veya yazabilir.

Tarayıcı açık bir kural bulduğunda ne yapmalı

Açık Firebase kuralları bir çalışma zamanı acil durumudur. Düzeltme üç hizmette aynı şekildedir: her kuralı açık bir owner alanına karşı request.auth.uid'e kapsamlandırın. Her hizmetin kendi kural sözdizimi vardır:

Firestore

match /users/{userId} { allow read, write: if request.auth != null && request.auth.uid == userId; }. Yol-segment bağlaması {userId} kullanıcının dokunabileceği tek belge olur.

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; } } }. Konvansiyon: dosyaları users/[uid]/[filename] altında saklayın ve sahipliği yola zorlatın.

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

Firebase CLI üzerinden kuralları dağıtın: firebase deploy --only firestore:rules, firebase deploy --only database, firebase deploy --only storage. Yeni kuralların üretimde olduğunu FixVibe taramasını yeniden çalıştırarak doğrulayın — baas.firebase-rules bulgusu temizlenmelidir.

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

Bu Firebase'in yerleşik araçlarına nasıl kıyaslanır

Firebase Console size mevcut kuralları gösterir ama bunları çalışma zamanı davranışına karşı denetlemez. Firebase Rules simülatörü, kural mantığını sentetik isteklere karşı test etmenizi sağlar — yararlı ama yerel. Hiçbir araç size üretim kurallarınızın aslında public internetteki anonim bir saldırgana ne döndürdüğünü söylemez. FixVibe (veya manuel yapılandırmayla Burp Suite) gibi harici bir tarayıcı, bir saldırganın yapacağı aynı açıdan sondalayan tek şeydir. Google'ın kendi App Check'i kötüye kullanımı hafifletir ama doğru kapsamlanmış kuralların yerini almaz.

Sık sorulan sorular

Tarayıcı Firestore verilerimi okuyacak veya değiştirecek mi?

Pasif taramalar, kuralların izin verip vermediğini doğrulamak için hizmet başına en fazla bir anonim okuma gönderir. Tarayıcı yanıt şeklini ve veri varlığını kaydeder — sayfalama yapmaz, belgeleri sıralamaz ve yazmaz. Yazma sondaları doğrulanmış domain sahipliği arkasında kapılıdır ve doğrulanmamış hedeflere karşı asla çalışmaz.

Firebase projem App Check kullanıyorsa ne olur?

App Check kimliği doğrulanmamış istekleri 403 ile reddeder. App Check token'ı olmayan bir tarayıcı her sondajda 403 görecek — ki bu doğru sonuçtur. App Check kural doğruluğunun yerine geçmez (çalınmış bir App Check token'ı artı açık bir kural hâlâ veri sızdırır) ama fırsatçı harici taramaları engeller.

Tarayıcı kısmi kural yanlış yapılandırmalarını (okuma açık, yazma kapalı) tespit edebilir mi?

Evet — her kural (allow read, allow write) ayrı ayrı sondalanır. Bir 200 OK ile başarılı olan yalnız okuma sondajı, yazmalar reddedilse bile açık okuma bulgusu raporlar. İki bulgu farklıdır: veri sızdırma ve veri manipülasyonu ayrı risklerdir.

Bu özel domain altında dağıtılan Firebase uygulamaları için çalışır mı?

Evet. Tarayıcı Firebase proje kimliğini domain'den değil, dağıtılan paketten çıkarır. Özel domain'ler, app.web.app alt domain'leri ve self-hosted Firebase uygulamaları, JavaScript paketi erişilebilir olduğu sürece aynı şekilde çalışır.

Sonraki adımlar

Üretim URL'nize karşı ücretsiz bir FixVibe taraması çalıştırın — baas.firebase-rules kontrolü her planda dağıtılır ve Firestore, Realtime Database ve Cloud Storage'da açık kuralları işaretler. Özellikle allow read, write: if true deseni hakkında daha derin bir açıklama için Firebase allow read, write: if true açıklaması'na bakın. Supabase, Firebase, Clerk ve Auth0 arasındaki şemsiye görünüm için BaaS yanlış yapılandırma tarayıcısı bölümünü okuyun.

// baas yüzeyinizi tarayın

Açık tabloyu başkası bulmadan önce bulun.

Bir üretim URL'si girin. FixVibe uygulamanızın konuştuğu BaaS sağlayıcılarını sıralar, açık endpoint'lerini parmak izlerine göre tespit eder ve kimliği doğrulanmamış bir istemcinin neleri okuyup yazabildiğini raporlar. Ücretsiz, kurulum yok, kart gerekmez.

  • Ücretsiz tarife — ayda 3 tarama, kayıt için kart gerekmez.
  • Pasif BaaS parmak izi — domain doğrulaması gerekmez.
  • Supabase, Firebase, Clerk, Auth0, Appwrite ve daha fazlası.
  • Her bulguda yapay zeka düzeltme istemleri — Cursor / Claude Code'a yapıştırın.
Firebase kuralları tarayıcısı: açık Firestore, Realtime Database ve Storage kurallarını bulun — Docs · FixVibe