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. Bu, kurallarınızı özelleştirmek veya kimlik doğrulamayı ayarlamak için zamanınız olana kadar veritabanınızı kötüye kullanıma karşı korumak içindir.
Realtime Database Güvenlik Kuralları, JavaScript benzeri bir söz dizimine sahiptir ve dört türe sahiptir:
Kural Türleri | |
---|---|
.read | Verilerin kullanıcılar tarafından okunmasına izin verilip verilmeyeceğini ve ne zaman izin verileceğini tanımlar. |
.write | Verilerin yazılmasına izin verilip verilmediğini ve ne zaman izin verildiğini açıklar. |
.validate | Doğru biçimlendirilmiş bir değerin nasıl görüneceğini, alt özelliği olup olmadığını ve veri türünü tanımlar. |
.indexOn | Sıralama ve sorgulamayı desteklemek için dizine eklenecek bir alt öğeyi belirtir. |
Realtime Database güvenliğine genel bakış
Firebase Realtime Database, uygulamanızın güvenliğini yönetmek için eksiksiz bir araç seti sağlar. Bu araçlar, kullanıcılarınızın kimliğini doğrulamayı, kullanıcı izinlerini uygulamayı ve girişleri doğrulamayı kolaylaştırır.
Firebase destekli uygulamalar, diğer uygulamalara kıyasla daha fazla istemci tarafı kod çalıştırır kullanır. Bu nedenle, güvenlik konusundaki yaklaşımımız alıştığınızdan biraz farklı olabilir.
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ılar kendi mesajlarını da silebilir ancak diğer kullanıcılar tarafından gönderilen mesajları silemez.
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ı basamaklıdır. Bu nedenle, bu kural kümesi /foo/
yolundaki tüm verilerin yanı sıra /foo/bar/baz
gibi daha derin yollardaki verilere okuma erişimi verir. Veritabanında daha üst düzeydeki .read
ve .write
kurallarının daha alt düzeydeki kuralları geçersiz kıldığını unutmayın. Bu nedenle, /foo/bar/baz
yolundaki bir kural yanlış olarak değerlendirilse bile bu örnekte /foo/bar/baz
için okuma erişimi yine de verilir.
Realtime Database Güvenlik Kuralları şunları içerir:
yerleşik değişkenler
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, geliştirme sırasında değişiklikler yapmanızı kolaylaştırır ancak uygulamanız dağıtılmaya hazır olduğunda verilerin tutarlı kalması önemlidir. 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/
alanına yazılan verilerin 100 karakterden kısa bir dize olması gerektiğini zorunlu kılar:
{ "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.