Catch up on everthing we announced at this year's Firebase Summit. Learn more

Web uygulamalarında özel bir sağlayıcı ile Uygulama Kontrolünü etkinleştirin

Bu sayfa gösterileri nasıl kullanarak, bir web uygulaması App Kontrolü sağlamak için özel App Kontrol sağlayıcı . Uygulama Kontrolü'nü etkinleştirdiğinizde, projenizin Firebase kaynaklarına yalnızca uygulamanızın erişebilmesini sağlamaya yardımcı olursunuz.

Varsayılan reCAPTCHA'nın sağlayıcı ile App Kontrolü kullanmak isterseniz, bkz web uygulamaları üzerinde reCAPTCHA ile App Teslim Etmeyi .

Sen başlamadan önce

1. Uygulama Kontrolü kitaplığını uygulamanıza ekleyin

Web uygulamanıza Firebase ekle Zaten değil varsa. Uygulama Kontrolü kitaplığını içe aktardığınızdan emin olun.

2. Uygulama Kontrolü sağlayıcı nesnesini oluşturun

Özel sağlayıcınız için bir Uygulama Kontrolü sağlayıcı nesnesi oluşturun. Bu nesne, bir olması gerekir getToken() özel Uygulama Kontrol sağlayıcı özgünlük kanıtı olarak gerektirir ve jeton atın bir Uygulamadaki karşılığında hangi belirteç edinim hizmetine gönderir türlü bilgi toplar yöntemi. Uygulama Kontrol SDK kolları belirteç önbelleğe alma, bu nedenle her zaman sizin uygulanmasında yeni bir simge olsun getToken() .

Web sürümü 9

const { CustomProvider } = require("firebase/app-check");

const appCheckCustomProvider = new CustomProvider({
  getToken: () => {
    return new Promise((resolve, _reject) => {
      // TODO: Logic to exchange proof of authenticity for an App Check token and
      // expiration time.

      // ...

      const appCheckToken = {
        token: tokenFromServer,
        expireTimeMillis: expirationFromServer * 1000
      };

      resolve(appCheckToken);
    });
  }
});

Web sürümü 8

const appCheckCustomProvider = {
  getToken: () => {
    return new Promise((resolve, _reject) => {
      // TODO: Logic to exchange proof of authenticity for an App Check token and
      // expiration time.

      // ...

      const appCheckToken = {
        token: tokenFromServer,
        expireTimeMillis: expirationFromServer * 1000
      };

      resolve(appCheckToken);
    });
  }
};

3. Uygulama Kontrolünü Başlatın

Herhangi bir Firebase hizmetine erişmeden önce aşağıdaki başlatma kodunu uygulamanıza ekleyin:

Web sürümü 9

const { initializeApp } = require("firebase/app");
const { initializeAppCheck } = require("firebase/app-check");

const app = initializeApp({
  // Your firebase configuration object
});

const appCheck = initializeAppCheck(app, {
  provider: appCheckCustomProvider,

  // Optional argument. If true, the SDK automatically refreshes App Check
  // tokens as needed.
  isTokenAutoRefreshEnabled: true    
});

Web sürümü 8

firebase.initializeApp({
  // Your firebase configuration object
});

const appCheck = firebase.appCheck();
appCheck.activate(
  appCheckCustomProvider,

  // Optional argument. If true, the SDK automatically refreshes App Check
  // tokens as needed.
  true);

Uygulama Kontrolü kitaplığı uygulamanıza yüklendikten sonra dağıtın.

Güncellenen istemci uygulaması, Firebase'e yaptığı her istekle birlikte Uygulama Kontrolü belirteçleri göndermeye başlayacak, ancak Firebase ürünleri, Firebase konsolunun Uygulama Kontrolü bölümünde zorlamayı etkinleştirene kadar belirteçlerin geçerli olmasını gerektirmeyecek. Ayrıntılar için sonraki iki bölüme bakın.

4. İstek metriklerini izleyin

Güncellenen uygulamanız artık kullanıcıların elinde olduğuna göre, kullandığınız Firebase ürünleri için Uygulama Kontrolü'nün uygulanmasını etkinleştirebilirsiniz. Ancak bunu yapmadan önce, bunu yapmanın mevcut meşru kullanıcılarınızı kesintiye uğratmayacağından emin olmalısınız.

Gerçek Zamanlı Veritabanı, Bulut Firestore ve Bulut Depolama

Realtime Database, Cloud Firestore ve Cloud Storage için bu kararı vermek için kullanabileceğiniz önemli bir araç, Uygulama Kontrolü istek ölçümleri ekranıdır.

Bir ürün için Uygulama Denetimi isteği ölçümleri görüntülemek açmak için Proje Ayarları> Uygulama Kontrol Firebase konsolunun bölümü. Örneğin:

Uygulama Kontrolü metrikleri sayfasının ekran görüntüsü

Her ürün için istek metrikleri dört kategoriye ayrılmıştır:

  • Doğrulanmış isteklerin geçerli App jetonu Kontrol sahip olanlardır. Uygulama Kontrolü zorlamasını etkinleştirdikten sonra yalnızca bu kategorideki istekler başarılı olur.

  • Eskimiş istemci istekleri bir App Kontrol jetonu eksik olanlardır. Bu istekler, Uygulama Kontrolü uygulamaya dahil edilmeden önce Firebase SDK'nın daha eski bir sürümünden olabilir.

  • Bilinmeyen kökenli istekleri bir App jetonu Kontrol eksik olanlardır ve bunlar Firebase SDK gelen benzemiyorsun. Bunlar, çalınan API anahtarlarıyla yapılan isteklerden veya Firebase SDK'sı olmadan yapılan sahte isteklerden olabilir.

  • Geçersiz istek uygulamanızı veya taklit ortamlardan taklit girişiminde özgün olmayan müşteriden olabilir hangi geçersiz App belirteç kontrol sahip olanlar vardır.

Uygulamanız için bu kategorilerin dağılımı, yaptırımı etkinleştirmeye karar verdiğinizde bilgi vermelidir. İşte bazı yönergeler:

  • Son isteklerin neredeyse tamamı doğrulanmış istemcilerden geliyorsa, arka uç kaynaklarınızı korumaya başlamak için yaptırımı etkinleştirmeyi düşünün.

  • Son isteklerin önemli bir kısmı muhtemelen eski müşterilerden geliyorsa, kullanıcıları rahatsız etmemek için yaptırımı etkinleştirmeden önce daha fazla kullanıcının uygulamanızı güncellemesini beklemeyi düşünün. Yayınlanan bir uygulamada Uygulama Kontrolü'nün zorunlu kılınması, Uygulama Kontrolü SDK'sı ile entegre olmayan önceki uygulama sürümlerini bozacaktır.

  • Uygulamanız henüz başlatılmadıysa, kullanımda olan herhangi bir eski istemci olmadığından Uygulama Kontrolü zorlamasını hemen etkinleştirmelisiniz.

Bulut İşlevleri

Cloud Functions için, işlevlerinizin günlüklerini inceleyerek Uygulama Kontrolü ölçümlerini alabilirsiniz. Çağrılabilir bir işlevin her çağrısı, aşağıdaki örnekte olduğu gibi yapılandırılmış bir günlük girişi yayar:

{
  "severity": "INFO",    // INFO, WARNING, or ERROR
  "logging.googleapis.com/labels": {"firebase-log-type": "callable-request-verification"},
  "jsonPayload": {
    "message": "Callable header verifications passed.",
    "verifications": {
      // ...
      "app": "MISSING",  // VALID, INVALID, or MISSING
    }
  }
}

Sen Google Cloud Console bu metrikleri analiz edebilir bir yaratma karşı metrik günlükleri tabanlı aşağıdaki metrik filtreli:

resource.type="cloud_function"
resource.labels.function_name="YOUR_CLOUD_FUNCTION"
resource.labels.region="us-central1"
labels.firebase-log-type="callable-request-verification"

Metrik Etiket alanını kullanarak jsonPayload.verifications.appCheck .

5. Zorlamayı etkinleştirin

Zorlamayı etkinleştirmek için her bir ürün için aşağıdaki talimatları izleyin. Bir ürün için yaptırımı etkinleştirdiğinizde, o ürüne yönelik tüm doğrulanmamış istekler reddedilir.

Gerçek Zamanlı Veritabanı, Bulut Firestore ve Bulut Depolama

Realtime Database, Cloud Firestore (iOS ve Android) ve Cloud Storage için zorlamayı etkinleştirmek için:

  1. Proje Ayarları> Uygulama Kontrol Firebase konsolunun bölümü.

  2. Zorlamayı etkinleştirmek istediğiniz ürünün metrik görünümünü genişletin.

  3. Tıklayın uygula ve seçiminizi onaylayın.

Zorunluluğu etkinleştirdikten sonra yürürlüğe girmesinin 10 dakika kadar sürebileceğini unutmayın.

Bulut İşlevleri

Bkz App Bulut Fonksiyonlar için uygulanmasını kontrol etkinleştirin .