Firebase Realtime Database Güvenlik Kuralları, verilerinizin nasıl yapılandırıldığı ve hangi dizinlerin bulunduğu gibi. Bu kurallar geçerli . Her okunan ve yazma isteği yalnızca kurallarınız izin veriyorsa tamamlanır. Varsayılan olarak kurallarınız kimsenin veritabanınıza erişmesine izin vermiyor. Burada amaç, verilerinizi kurallarınızı özelleştirmek veya ayarlamak için zamanınız olana kadar kötüye kullanım durumundan kimlik doğrulama.
Realtime Database Güvenlik Kuralları, JavaScript benzeri bir söz dizimine sahiptir ve dört türe sahiptir:
Kural Türleri | |
---|---|
okuyun | Verilerin kullanıcılar tarafından okunmasına izin verilip verilmeyeceğini ve ne zaman izin verileceğini tanımlar. |
.yazma | Verilerin yazılmasına izin verilip verilmediğini ve ne zaman yazılabileceğini tanımlar. |
.verify | Doğru biçimlendirilmiş bir değerin veri türünü de içerir. |
.indexOn | Sıralama ve sorgulamayı desteklemek için dizine eklenecek alt öğeyi belirtir. |
Realtime Database güvenliğine genel bakış
Firebase Realtime Database, olarak da bilinir. Bu araçlar, kullanıcılarınızın kimliklerini doğrulamanızı, ve girişleri doğrular.
Firebase destekli uygulamalar, diğer uygulamalara kıyasla daha fazla istemci tarafı kod çalıştırır kullanır. Bu nedenle, güvenlik yaklaşımımız biraz daha alıştığınızdan farklı olacaktır.
Doğrulama
Uygulamanızın güvenliğini sağlamak için attığımız en yaygın ilk adım ve kullanıcılarınızın tanımlanmasına katkıda bulunur. Bu sürece kimlik doğrulama adı verilir. Firebase Authentication'ı kullanabilirsiniz kullanıcıların uygulamanızda oturum açmasını sağlayın. Firebase Kimlik Doğrulaması Google ve Google Cloud Platform gibi yaygın kimlik doğrulama yöntemleri için Facebook, e-posta ve şifreyle giriş, anonim giriş ve daha fazlası.
Kullanıcı kimliği önemli bir güvenlik kavramıdır. Farklı kullanıcılar farklı bazen farklı yetenekleri olabilir. Örneğin, bir sohbette her mesaj, onu oluşturan kullanıcıyla ilişkilendirilir. Kullanıcı Sayısı Ayrıca kendi mesajlarını da silebilirler, ancak başkaları tarafından gönderilen iletileri silmezler yardımcı olur.
Yetkilendirme
Kullanıcınızı tanımlamak, güvenliğin yalnızca bir parçasıdır. Kim olduklarını öğrendikten sonra,
veritabanınızdaki verilere erişimini kontrol edecek bir yönteme ihtiyaç duyabilir. Gerçek Zamanlı Veritabanı Güvenlik Kuralları
Böylece her kullanıcı için erişimi kontrol edebilirsiniz. Örneğin, aşağıda örnek olarak
herkesin /foo/
yolunu okumasına izin veren ancak bunu yapmayan güvenlik kuralları
bir şey yazmalısınız:
{ "rules": { "foo": { ".read": true, ".write": false } } }
.read
ve .write
kuralları kademeli olarak gerçekleştiğinden bu kural grubu
/foo/
yolundaki ve daha derindeki tüm verilere okuma erişimi verir
/foo/bar/baz
gibi yolları ifade eder. .read
ve
Veritabanında daha sığ olan .write
kurallar daha derin kuralları geçersiz kılar. Bu nedenle,
Bu örnekte de /foo/bar/baz
için okuma erişimi verilir
/foo/bar/baz
yolundaki bir kural yanlış olarak değerlendirilmiş olsa bile.
Realtime Database Güvenlik Kuralları şunları içerir:
yerleşik değişkenler
'nı inceleyin.
ve fonksiyonların başında
sunucu tarafı zaman damgalarını, kimlik doğrulama bilgilerini ve diğer
ve diğerleri. Şu etkinlik için yazma erişimi veren bir kural örneğini aşağıda bulabilirsiniz:
kimliği doğrulanmış kullanıcılardan /users/<uid>/
öğesine, burada <uid> :
Firebase Authentication aracılığıyla edinilen kullanıcı kimliği.
{ "rules": { "users": { "$uid": { ".write": "$uid === auth.uid" } } } }
Veri doğrulama
Firebase Realtime Database şemasızdır. Bu sayede, öğeleri değiştirmek kolaylaşır
Ancak uygulamanız dağıtıma hazır olduğunda
tutarlı veriler yer alır. Kural dili bir .validate
içerir
kullanılan aynı ifadeleri kullanarak doğrulama mantığı uygulamanıza olanak tanıyan bir kuraldır.
.read
ve .write
kuralları için. Tek fark
doğrulama kurallarının kademeli
olmadığından
Yazmaya izin verilebilmesi için doğrulama kurallarının "true" olarak değerlendirilmesi gerekir.
Bu kurallar, /foo/
işlevine yazılan verilerin dize olması gerektiğini zorunlu kılar
100 karakterden az:
{ "rules": { "foo": { ".validate": "newData.isString() && newData.val().length < 100" } } }
Doğrulama kuralları, aynı yerleşik işlevlerin hepsine ve
değişkenlerini .read
ve .write
kuralları olarak tanımlar. Tekliflerinizi otomatikleştirmek ve optimize etmek için
bu adımları izleyerek, uygulamanızın başka bir yerinde bulunan verilerden haberdar olan
doğrulama kuralları oluşturabilirsiniz.
kullanıcı kimliği, sunucu zamanı ve çok daha fazlasını içerir.
Veritabanı dizinlerini tanımlama
Firebase Realtime Database, verilerin sıralanmasına ve sorgulanmasına olanak tanır. Küçük veriler için için veri tabanı geçici sorgulamayı desteklediğinden dizinler genellikle ne kadarının gerektiğini belirler. Ancak uygulamanızın lansmanını yapmadan önce, olarak çalışmaya devam etmesini sağlamak için, ihtiyacınız olan sorgulara ilişkin dizinleri yardımcı olabilir.
Dizinler .indexOn
kuralı kullanılarak belirtilir. Bir örnekle açıklayalım
bir liste için yükseklik ve uzunluk alanlarını dizine ekleyecek
dinozorlar:
{ "rules": { "dinosaurs": { ".indexOn": ["height", "length"] } } }
Sonraki adımlar
- Veritabanınız için kural geliştirmeye başlayın.
- Güvenlik kurallarını kullanarak verilerinizin güvenliğini sağlama hakkında daha fazla bilgi edinin.
- Kuralları kullanarak dizinleri belirtme hakkında daha fazla bilgi edinin.