Firebase güvenlik kontrol listesi

Firebase kaynaklarınızı ve kullanıcılarınızın aşağıdaki adımları izleyin, aykırıdır. Her öğe gereksinimleriniz için geçerli olmayabilir ancak dikkate almanız gerekir.

Kötüye kullanım amaçlı trafikten kaçının

Arka uç hizmetleri için izleme ve uyarı ayarlama

Hizmet reddi (DOS) saldırıları gibi kötüye kullanım amaçlı trafiği tespit etmek için Cloud Firestore için izleme ve uyarı Realtime Database, Cloud Storage ve Hosting

Uygulamanıza bir saldırı olduğundan şüpheleniyorsanız Destek ekibiyle iletişime geçin. onlara ne olduğunu anlatın.

App Check özelliğini etkinleştir

Yalnızca uygulamalarınızın arka uç hizmetlerinize erişebilmesi için şunları etkinleştirin: Destekleyen her hizmet için Firebase App Check.

Cloud Functions cihazınızı normal trafiğe göre ölçeklendirilecek şekilde yapılandırın

Cloud Functions, uygulamanızın ihtiyaçlarını karşılamak için otomatik olarak ölçeklendirme yapar ancak bu durum büyük bir fatura anlamına gelebilir. Bunu önlemek için: eş zamanlı örnek sayısını sınırlama bir işlevin normal trafiği temel alınır.

Sınırlara neredeyse ulaşıldığında bildirim almak için uyarıları ayarlayın

Hizmetinizde ani artışlar olursa kotalar genellikle devreye girer ve otomatik olarak uygulamanıza gelen trafiği kısıtlayın. Web sitenizin Kullanım ve faturalandırma kontrol paneli, ama kampanyalarınızı bütçe uyarıları ayarlayın nasıl bilgilendirileceğini belirlemek için projenize eklemeniz gerekir.

Kendi kendine DO'ları önleyin: İşlevleri emülatörlerle yerel olarak test edin

Geliştirme sırasında istemeden kendi başınıza bir şeyler yapmanız çok kolay olabilir. Cloud Functions: örneğin, sonsuz bir tetikleyici-yazma döngüsü oluşturarak. Aşağıdaki adımları uygulayarak bu hataların canlı hizmetleri etkilemesini önleyebilirsiniz: Firebase Local Emulator Suite ile geliştirmeyi öğreneceksiniz.

Yanlışlıkla kendiniz DOS işlemi yaparsanız, işlevinizi silerek dağıtımını kaldırın index.js arasında, ardından çalışıyor firebase deploy --only functions

Gerçek zamanlı yanıt vermenin daha az önemli olduğu yerlerde, işlevleri savunmaya dayalı bir şekilde yapılandırın

Bir fonksiyonun sonucunu gerçek zamanlı olarak sunmanız gerekmiyorsa, istediğiniz sonuçları sonuçları toplu olarak işleyerek kötüye kullanım amaçlı trafiğe karşı azaltma: yayınlama sonuçları Pub/Sub ve sonuçları düzenli aralıklarla işleyerek planlanmış işlev.

API anahtarlarını anlama

Firebase hizmetleri için API anahtarları gizli değildir

Firebase, yalnızca uygulamanızın Firebase projesini Firebase'e tanımlamak için API anahtarlarını kullanır ve Cloud Storage verilerine yönelik erişimi kontrol etmemek kaydıyla Firebase Security Rules kullanılarak gerçekleştirildi. Bu nedenle, Google Ads hesabınızdaki Firebase hizmetlerinin API anahtarlarını gizli olarak işleyebilir ve bunları güvenli bir şekilde yerleştirebilirsiniz girmelisiniz. Daha fazla bilgi: Firebase için API anahtarları.

API anahtarı kısıtlamalarını ayarlama

Aşağıdaki işlemler için API anahtarınızı kullanmaya çalışan saldırganlara karşı ek bir önlem olarak: e-posta göndererek API anahtarı kısıtlamaları uygulama istemcilerinizin ve kullandığınız API'lerin kapsamını belirleyin.

FCM sunucu anahtarını gizli tutun

Firebase hizmetleri için API anahtarlarından farklı olarak, FCM sunucu anahtarları ( eski FCM HTTP API) hassastır ve gizli tutulmalıdır.

Hizmet hesabı anahtarlarını gizli tutma

Ayrıca Firebase hizmetleri API anahtarlarından farklı olarak, hizmet hesabı özel anahtarları (kullanılan (Firebase Admin SDK) hassastır ve gizli tutulmalıdır.

Firebase Security Rules

Kuralları üretimde veya kilitli modda başlatma

Cloud Firestore, Realtime Database ve Cloud Storage hizmetlerini ayarladığınızda tüm erişimleri varsayılan olarak reddeden güvenlik kuralları ve erişim izni veren ve uygulamanızı geliştirirken belirli kaynaklardan yararlanın.

Yeni Cloud Firestore (üretim) örnekleri için varsayılan ayarlardan birini kullan mod) ve Realtime Database (kilitli mod). Cloud Storage için bir güvenlik seviyesiyle başlayın şu şekilde bir kural yapılandırması oluşturun:

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

Güvenlik kuralları bir şemadır; doküman eklerken kural ekleme

Uygulamanızı yazdıktan sonra lansman öncesi gibi güvenlik kuralları yazmayın. görevi görebilir. Bunun yerine, uygulamanızı yazarken güvenlik kuralları yazın ve bunları Yeni bir belge türü veya yol yapısı kullanmanız gerektiğinde güvenlik kuralını yazacağım.

Güvenlik kurallarını Local Emulator Suite ile birim test edin; onu CI'ya ekle

Güvenlik kurallarınızın, uygulama geliştirmenize uygun olduğundan emin olmak için kurallarınızı Firebase Local Emulator Suite ve bu testleri CI ardışık düzeninize ekleyin. Aşağıdakiler için bu kılavuzlara göz atın: Cloud Firestore ve Realtime Database.

Doğrulama

Özel kimlik doğrulama: Güvenilir (sunucu tarafı) bir ortamdan JWT'leri yazın

Halihazırda güvenli bir oturum açma sisteminiz varsa, ister özel bir sistem ister üçüncü taraf hizmetiyle kimlik doğrulaması yapmak için mevcut sisteminizi Firebase hizmetleri. Özel JWT'ler oluşturma Ardından jetonları istemcinize iletin. İstemciniz, kimlik doğrulama jetonu (iOS+, Android, Web, Unity, C++) girin.

Üçüncü taraf sağlayıcıyla özel kimlik doğrulama kullanımına ilişkin bir örnek için bkz. ve Okta'yı kullanarak Firebase ile kimlik doğrulayın.

Yönetilen kimlik doğrulama: OAuth 2.0 sağlayıcıları en güvenlidir

Firebase'in yönetilen kimlik doğrulama özelliklerini kullanıyorsanız OAuth 2.0 / COPPA Bağlantı sağlayıcı seçenekleri (Google, Facebook vb.) en güvenli olanlardır. Siz yapabiliyorsanız bu sağlayıcılardan birini veya daha fazlasını desteklemelidir (kullanıcınıza bağlı olarak baz alınır).

E-posta şifresi kimlik doğrulaması: kaba kuvvet saldırılarını önlemek için oturum açma uç noktası için sıkı kota ayarlayın

Firebase'in yönetilen e-posta şifresi kimlik doğrulama hizmetini kullanıyorsanız kaba durumu önlemek için identitytoolkit.googleapis.com uç noktalarının varsayılan kotası kuvvetli saldırılardır. Bu işlemi şuradan yapabilirsiniz: Identity Toolkit API sayfası Google Cloud konsolunda kontrol edebilirsiniz.

E-posta şifresi kimlik doğrulaması: E-posta numaralandırma korumasını etkinleştir

Firebase'in yönetilen e-posta şifresi kimlik doğrulama hizmetini kullanıyorsanız e-posta numaralandırma korumasını etkinleştirme Böylece kötü amaçlı kişilerin projenizin kimlik doğrulama uç noktalarını kötüye kullanmalarını hesap adlarını tahmin et.

Çok öğeli kimlik doğrulaması için Google Cloud Identity Platform sürümüne geçin

Oturum açma sırasında ekstra güvenlik için çok öğeli kimlik doğrulaması desteği ekleyebilirsiniz Google Cloud Identity Platform sürümüne geçerek yapabilirsiniz. Mevcut Firebase Authentication kodunuz üst sürüme geçmenizin ardından çalışmaya devam edecektir.

Anonim kimlik doğrulama

Bilgilendirici ilk katılım için yalnızca anonim kimlik doğrulama kullan

Kullanıcılar, doğrulama yapmadan önce kullanıcıların temel durumunu kaydetmek için anonim kimlik doğrulamayı yalnızca kullan. oturum açmanız gerekir. Anonim kimlik doğrulama, kullanıcının tercihine bağlı değildir oturum açın.

Verilerinin diğer cihazlarda olmasını isteyecek kullanıcıları başka bir oturum açma yöntemine dönüştürme

Kullanıcı, yerel verileri temizlerse anonim kimlik doğrulama verileri kalmaz veya cihazlar arasında geçiş yapılmasını sağlar. Uygulamanın yeniden başlatılması dışında verileri saklamanız gerekiyorsa her yerde kullanıcıyı kalıcı hesaba dönüştürme.

Kullanıcıların oturum açma sağlayıcısına dönüşmesini veya e-posta adresini doğrulamasını gerektiren güvenlik kuralları kullanma

İsteyen herkes projenizde anonim hesap oluşturabilir. Demek ki, herkese açık olmayan tüm verileri belirli oturum açma yöntemleri veya doğrulanmış e-posta adresleri gerektiren güvenlik kuralları.

Örneğin:

allow write: if request.auth.token.firebase.sign_in_provider != "anonymous";
allow write: if request.auth.token.email_verified = true;

Cloud Functions savunma sayısı aldı

Ortam değişkenlerine hiçbir zaman hassas bilgiler eklemeyin

Genellikle kendi bünyesinde barındırılan bir Node.js uygulamasında özel anahtarlar gibi hassas bilgiler sağlar. Bunu Cloud Functions içinde yapmayın. Cloud Functions, yeniden kullandığı için ortamlarda, hassas bilgiler sağlanmamalıdır. depolanan verileri içerebilir.

  • Firebase API anahtarlarını (gizli olmayan) depolamak için: içine yerleştirmeniz gerekir.

  • Firebase Admin SDK öğesini Cloud Functions içinde kullanıyorsanız hizmet hesabı kimlik bilgilerini açıkça sağlamanız gerekir; çünkü Admin SDK sırasında otomatik olarak edinilebilir.

  • Hizmet hesabı gerektiren Google ve Google Cloud API'lerini çağırıyorsanız Böylece, Node.js'nin Google Auth kitaplığı bu kimlik bilgilerini alabilir şuradan uygulama varsayılan kimlik bilgileri, Bunlar Cloud Functions ile otomatik olarak doldurulur.

  • Google dışı hizmetlere ait özel anahtarları ve kimlik bilgilerini Cloud Functions, kullan Secret Manager

Hassas bilgileri şifreleme

Fonksiyonlarınıza hassas bilgiler iletmekten kaçınamıyorsanız bilgileri şifrelemek için kendi özel çözümünüzü oluşturabilirsiniz.

Basit işlevler daha güvenlidir; Karmaşıklığa ihtiyacınız varsa Cloud Run

İşlevlerinizin mümkün olduğunca temel ve anlaşılır olmasına özen gösterin. Karmaşıklık çoğu zaman fark edilmesi zor hatalara veya beklenmedik davranışlara neden olabilir.

Karmaşık mantığa veya ortam yapılandırmalarına ihtiyacınız varsa Cloud Run - Cloud Functions.

Çevre yönetimi

Geliştirme ve hazırlık projeleri oluşturma

Geliştirme, hazırlık ve üretim için ayrı Firebase projeleri oluşturun. Hazırlık için test edilene kadar istemci kodunu üretimle birleştirme belirler.

Ekibin üretim verilerine erişimini sınırlama

Daha büyük bir ekiple çalışırsanız hataların sonuçlarını azaltabilirsiniz. aşağıdakilerden birini kullanarak üretim verilerine erişimi sınırlandırarak ve güvenlik ihlallerini önceden tanımlanmış IAM rolleri veya özel IAM rolleri

Ekibiniz Firebase Local Emulator Suite kullanıyorsa geliştirme için (önerilir), Chrome Web Mağazası'ndaki bir üretim projesidir.

Kütüphane yönetimi

Kitaplıkla ilgili yazım hataları yapma veya kitaplığın yeni bakımını üstlenme konusunda dikkatli olun

Projenize kitaplıklar eklerken, kütüphanenin adına çok dikkat edin. üzerine konuşacağız. Yapmak istediğinize benzer ada sahip bir kitaplık yükleme kötü amaçlı kod içerebilir.

Değişiklikleri anlamadan kitaplıkları güncellemeyin

Yeni sürüme geçmeden önce kullandığınız kitaplıkların değişiklik günlüklerini inceleyin. Emin olun o yükseltmenin değer kattığından emin olun ve sahibin hâlâ sizin aklınıza gelen güven.

Watchdog kitaplıklarını, geliştirme veya test bağımlılıkları olarak yükleyin

Projenizi taramak için Snyk gibi bir kitaplık kullanın güvensiz bağımlılıkları ortaya koyabilir.

Cloud Functions için izlemeyi ayarlayın; kitaplık güncellemelerinden sonra kontrol et

URL'yi Cloud Functions logger SDK'sı CANNOT TRANSLATE izleyin ve uyarı alın (kitaplık güncellemelerinin neden olduğu davranışlar da dahil olmak üzere) olağan dışı davranıştır.