Google is committed to advancing racial equity for Black communities. See how.
Bu sayfa, Cloud Translation API ile çevrilmiştir.
Switch to English

Güvensiz kurallardan kaçının

Firebase Güvenlik Kuralları yapılandırmalarındaki yaygın güvenlik açıklarını anlamak, kendi kurallarınızı gözden geçirmek ve daha iyi güvenlik altına almak ve bunları dağıtmadan önce değişikliklerinizi test etmek için bu kılavuzu kullanın.

Verilerinizin güvenli bir şekilde güvenli olmadığına dair bir uyarı alırsanız, bu yaygın olarak yapılan hataları inceleyin ve savunmasız kuralları güncelleyin.

Firebase Güvenlik Kurallarınıza erişin

Mevcut Kurallarınızı görüntülemek için Firebase CLI veya Firebase konsolunu kullanın. Güncellemelerin yanlışlıkla üzerine yazılmasını önlemek için kurallarınızı tutarlı bir şekilde aynı yöntemi kullanarak düzenlediğinizden emin olun. Yerel olarak tanımlanmış kurallarınızın en son güncellemeleri yansıtıp yansıtmadığından emin değilseniz Firebase konsolu her zaman Firebase Güvenlik Kurallarınızın en son dağıtılan sürümünü gösterir.

Kurallarınıza Firebase konsolundan erişmek için projenizi seçin, ardından Realtime Database , Cloud Firestore veya Storage'a gidin . Doğru veritabanına veya depolama paketine girdikten sonra Kurallar'ı tıklayın.

Kurallarınıza Firebase CLI'dan erişmek için firebase.json dosyanızda belirtilen kurallar dosyasına gidin.

Firebase Güvenlik Kurallarını Anlayın

Firebase Güvenlik Kuralları, verilerinizi kötü niyetli kullanıcılardan korur. Firebase konsolunda oluşturulan bir veritabanı veya depolama örneği oluşturduğunuzda, tüm kullanıcılara erişimi reddetmeyi ( Kilitli mod ) veya tüm kullanıcılara erişim vermeyi ( Test modu ) seçebilirsiniz. Geliştirme sırasında daha açık bir yapılandırma isteyebilirsiniz, ancak uygulamanızı dağıtmadan önce kurallarınızı doğru şekilde yapılandırmak ve verilerinizi güvence altına almak için zaman ayırdığınızdan emin olun.

Uygulamanızı geliştirirken ve kurallarınız için farklı yapılandırmaları test ederken, uygulamanızı yerel bir geliştirme ortamında çalıştırmak için yerel Firebase emülatörlerinden birini kullanın.

Güvenli olmayan kurallara sahip yaygın senaryolar

Varsayılan olarak veya uygulamanızı geliştirmek için başlangıçta çalıştığınız sırada oluşturmuş olabileceğiniz Kurallar, uygulamanızı dağıtmadan önce incelenmeli ve güncellenmelidir. Aşağıdaki yaygın tuzaklardan kaçınarak kullanıcılarınızın verilerini gerektiği gibi güvence altına aldığınızdan emin olun.

Açık Erişim

Firebase projenizi kurarken, geliştirme sırasında açık erişime izin vermek için kurallarınızı belirlemiş olabilirsiniz. Uygulamanızı kullanan tek kişinin siz olduğunuzu düşünebilirsiniz, ancak uyguladıysanız internette kullanılabilir. Kullanıcıların kimliğini doğrulamıyorsanız ve güvenlik kurallarını yapılandırmıyorsanız, proje kimliğinizi tahmin eden herhangi biri verileri çalabilir, değiştirebilir veya silebilir.

Önerilmez: Tüm kullanıcılar için okuma ve yazma erişimi.

Cloud Firestore

// Allow read/write access to all users under any conditions
// Warning: **NEVER** use this ruleset in production; it allows
// anyone to overwrite your entire database.

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

Gerçek Zamanlı Veritabanı

{
  // Allow read/write access to all users under any conditions
  // Warning: **NEVER** use this ruleset in production; it allows
  // anyone to overwrite your entire database.

  "rules": {
    ".read": true
    ".write": true
  }
}
    

Bulut depolama

// Anyone can read or write to the bucket, even non-users of your app.
// Because it is shared with Google App Engine, this will also make
// files uploaded via GAE public.
// Warning: This rule makes every file in your storage bucket accessible to any
// user. Apply caution before using it in production, since it means anyone can
// overwrite all your files.

service firebase.storage {
  match /b/{bucket}/o {
    match /{allPaths=**} {
      allow read, write;
    }
  }
}
    
Çözüm: Okuma ve yazma erişimini kısıtlayan kurallar.

Veri hiyerarşiniz için anlamlı kurallar oluşturun. Bu güvensizliğe yönelik yaygın çözümlerden biri, Firebase Authentication ile kullanıcı tabanlı güvenliktir. Kullanıcıların kimliğini kurallarla doğrulama hakkında daha fazla bilgi edinin.

Cloud Firestore

Gerçek Zamanlı Veritabanı

Bulut depolama

Kimliği doğrulanmış herhangi bir kullanıcı için erişim

Bazen Kurallar, bir kullanıcının oturum açıp açmadığını kontrol eder, ancak bu kimlik doğrulamasına dayalı olarak erişimi daha fazla kısıtlamaz. Kurallarınızdan biri auth != null içeriyorsa, oturum açmış herhangi bir kullanıcının verilere erişmesini istediğinizi onaylayın.

Önerilmez: Oturum açmış herhangi bir kullanıcının tüm veritabanınıza okuma ve yazma erişimi vardır.

Cloud Firestore

service cloud.firestore {
  match /databases/{database}/documents {
    match /some_collection/{document} {
      allow read, write: if request.auth.uid != null;
    }
  }
}

Gerçek Zamanlı Veritabanı

{
  "rules": {
    ".read": "auth.uid != null"
    ".write": "auth.uid != null"
  }
}

Bulut depolama

// Only authenticated users can read or write to the bucket
service firebase.storage {
  match /b/{bucket}/o {
    match /{allPaths=**} {
      allow read, write: if request.auth != null;
    }
  }
}
Çözüm: Güvenlik koşullarını kullanarak dar erişim.

Kimlik doğrulamasını kontrol ederken, belirli veri kümeleri için belirli kullanıcılara erişimi daha da kısıtlamak için kimlik doğrulama özelliklerinden birini kullanmak isteyebilirsiniz. Farklı kimlik doğrulama özellikleri hakkında daha fazla bilgi edinin.

Cloud Firestore

Gerçek Zamanlı Veritabanı

Bulut depolama

(Gerçek Zamanlı Veritabanı) Hatalı bir şekilde devralınan kurallar

Gerçek Zamanlı Veritabanı Kuralları, daha sığ olan kurallar, daha derin, alt düğümlerdeki kuralları geçersiz kılan üst yollar ile kademeli. Bir alt düğümde bir kural yazdığınızda, bunun yalnızca ek ayrıcalıklar sağlayabileceğini unutmayın. Veritabanınızda daha derin bir yolda verilere erişimi iyileştiremez veya iptal edemezsiniz.

Önerilmez: Alt yollardaki kuralları iyileştirme
{
  "rules": {
     "foo": {
        // allows read to /foo/*
        ".read": "data.child('baz').val() === true",
        "bar": {
          /* ignored, since read was allowed already */
          ".read": false
        }
     }
  }
}
Çözüm: Geniş olan üst yollara kurallar yazın ve alt yollarda daha spesifik ayrıcalıklar verin Veri erişim ihtiyaçlarınız daha fazla ayrıntı gerektiriyorsa, kurallarınızı ayrıntılı tutun. Verilerinizi Güvence Altına Al bölümünde Gerçek Zamanlı Veritabanı Kuralları hakkında daha fazla bilgi edinin.

Kapalı erişim

Uygulamanızı geliştirirken, diğer bir yaygın yaklaşım da verilerinizi kilit altında tutmaktır. Genelde bu, aşağıdaki gibi tüm kullanıcılara okuma ve yazma erişimini kapattığınız anlamına gelir:

Cloud Firestore

// Deny read/write access to all users under any conditions
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if false;
    }
  }
}

Gerçek Zamanlı Veritabanı

{
  "rules": {
    ".read": false,
    ".write": false
  }
}
    

Bulut depolama

// Access to files through Firebase Storage is completely disallowed.
// Files may still be accessible through Google App Engine or GCS APIs.

service firebase.storage {
  match /b/{bucket}/o {
    match /{allPaths=**} {
      allow read, write: if false;
    }
  }
}

Firebase Admin SDK'ları ve Cloud Functions, veritabanınıza yine de erişebilir. Cloud Firestore veya Realtime Database'i Firebase Admin SDK ile birlikte yalnızca sunucuya açık bir arka uç olarak kullanmayı planladığınızda bu kuralları kullanın. Güvenli olsa da, uygulamanızın istemcilerinin verileri düzgün şekilde alıp alamadığını test etmelisiniz.

Cloud Firestore Güvenlik Kuralları ve bunların nasıl çalıştığı hakkında daha fazla bilgi için Cloud Firestore Güvenlik Kurallarını Kullanmaya Başlayın .

Cloud Firestore Güvenlik Kurallarınızı test edin

Uygulamanızın davranışını kontrol etmek ve Cloud Firestore Güvenlik Kuralları yapılandırmalarınızı doğrulamak için Firebase Emulator'ü kullanın. Herhangi bir değişikliği dağıtmadan önce yerel bir ortamda birim testleri çalıştırmak ve otomatikleştirmek için Cloud Firestore emülatörünü kullanın.

Firebase konsolunda Firebase Güvenlik Kurallarını hızla doğrulamak için Firebase Kural Simülatörü'nü kullanın.