Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

Güvenli olmayan 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çirip 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 gerektiği gibi güvenliğinin sağlanmadığına dair bir uyarı alırsanız, yaygın olarak yapılan bu hataları inceleyin ve güvenlik açığı bulunan tüm kuralları güncelleyin.

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

Mevcut Kurallarınızı görüntülemek için Firebase CLI'yi veya Firebase konsolunu kullanın. Yanlışlıkla güncellemelerin üzerine yazmaktan kaçınmak için kurallarınızı aynı yöntemi kullanarak tutarlı bir şekilde 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.

Adresinin kurallarını erişmek için Firebase konsoluna , Gerçek Zamanlı Veritabanı, Bulut Firestore veya Depolama ardından gezinme, projenizi seçin. Doğru veritabanı veya depolama kova girince Kurallar tıklayın.

Firebase CLI adresinin kurallarını erişmek için, not kurallar dosyasına gidin firebase.json dosyası .

Firebase Güvenlik Kurallarını Anlayın

Firebase Güvenlik Kuralları, verilerinizi kötü niyetli kullanıcılardan korur. Eğer Firebase konsolunda bir veritabanı örneği veya Cloud Storage grup oluştururken, tercih ya tüm kullanıcılara (Test modu) tüm kullanıcılara erişim (Kilitli modu) ya da hibe erişimini engelleyebilir. 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 verilerinizin güvenliğini sağlamak için zaman ayırdığınızdan emin olun.

Eğer uygulama geliştirme ve kuralları için farklı yapılandırmalar test ediyoruz gibi, kullanımı, bir yerel Firebase emülatörlerine yerel geliştirme ortamında uygulamanızı çalıştırın.

Güvenli olmayan kurallara sahip yaygın senaryolar

Varsayılan olarak veya uygulamanızı geliştirmeye başlarken oluşturduğunuz Kurallar, uygulamanızı dağıtmadan önce gözden geçirilmeli ve güncellenmelidir. Aşağıdaki yaygın tuzaklardan kaçınarak kullanıcılarınızın verilerini düzgün şekilde güvenceye 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şi olduğunuzu düşünebilirsiniz, ancak dağıttıysanız, internette kullanılabilir. Kullanıcıların kimliğini doğrulamıyor ve güvenlik kurallarını yapılandırmıyorsanız, proje kimliğinizi tahmin eden herkes verileri çalabilir, değiştirebilir veya silebilir.

Tavsiye: Okuma ve tüm kullanıcılar için yazma erişimi.

Bulut 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 App Engine, this will also make
// files uploaded via App Engine public.
// Warning: This rule makes every file in your Cloud 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şimi kısıtlamak kurallar.

Veri hiyerarşiniz için anlamlı kurallar oluşturun. Bu güvensizliğin yaygın çözümlerinden biri, Firebase Kimlik Doğrulaması ile kullanıcı tabanlı güvenliktir. Hakkında daha fazla bilgi kurallara kullanıcıların kimliklerini doğrulamaktadır .

Bulut 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çtığını kontrol eder, ancak bu kimlik doğrulamaya dayalı olarak erişimi daha fazla kısıtlamaz. Kurallarınızın biri varsa auth != null herhangi giriş yapmış olan kullanıcının verilerine erişmesini istediğiniz, onaylamak.

Tavsiye: Herhangi giriş yapmış kullanıcı okumuş ve tüm veritabanına yazma erişimi.

Bulut 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ı kullanarak Dar erişimi.

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

Bulut Firestore

Gerçek Zamanlı Veritabanı

Bulut depolama

(Gerçek Zamanlı Veritabanı) Uygun olmayan şekilde devralınan kurallar

Gerçek Zamanlı Veritabanı Kuralları, daha sığ kurallarla, daha derindeki alt düğümlerdeki kuralları geçersiz kılan ana yollar ile basamaklıdır. Bir alt düğümde bir kural yazarken, bunun yalnızca ek ayrıcalıklar verebileceğini unutmayın. Veritabanınızdaki daha derin bir yoldaki verilere erişimi iyileştiremez veya iptal edemezsiniz.

Tavsiye: çocuk yolları en Rafineri kuralları
{
  "rules": {
     "foo": {
        // allows read to /foo/*
        ".read": "data.child('baz').val() === true",
        "bar": {
          /* ignored, since read was allowed already */
          ".read": false
        }
     }
  }
}
Çözüm: geniş, ve veri erişim ihtiyaçları granül kurallarınızı tutmak, daha ayrıntılı bilgiler gerektiriyorsa çocuk yolları daha spesifik ayrıcalık tanımak ebeveyn yolları en Yazma kuralları. Gerçek Zamanlı Veri Tabanı Kuralları basamaklı hakkında daha fazla bilgi Verilerinizi Güvenli .

Kapalı erişim

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

Bulut 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 Cloud Storage is completely disallowed.
// Files may still be accessible through App Engine or Google Cloud Storage 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 erişmeye devam edebilir. Firebase Admin SDK ile birlikte Cloud Firestore veya Realtime Database'i yalnızca sunucu arka ucu olarak kullanmayı düşündüğünüzde bu kuralları kullanın. Güvenli olsa da, uygulamanızın istemcilerinin verileri düzgün bir şekilde alıp alamayacağını test etmelisiniz.

Bulut Firestore Güvenlik Kuralları hakkında daha fazla bilgi ve onlar nasıl çalıştığını Bulut Firestore Güvenlik Kuralları Başlarken .

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

Cloud Firestore Güvenlik Kuralları yapılandırmaları uygulamanızın davranışını kontrol etmek ve doğrulamak için, kullanmak Firebase Emulator . Herhangi bir değişikliği dağıtmadan önce yerel bir ortamda birim testlerini çalıştırmak ve otomatikleştirmek için Cloud Firestore öykünücüsünü kullanın.

Hızla Firebase konsolundaki Firebase Güvenlik Kuralları doğrulamak için kullanın Firebase Kuralları Simülatörü .