了解 2023 年 Google I/O 大会上介绍的 Firebase 亮点。了解详情

Web uygulamalarında Uygulama Kontrolü ile Firebase dışı kaynakları koruyun

Uygulama Kontrolü ile uygulamanızın kendi kendine barındırılan arka uçlar gibi Firebase dışı kaynaklarını koruyabilirsiniz. Bunu yapmak için, aşağıdakilerin ikisini de yapmanız gerekir:

Sen başlamadan önce

reCAPTCHA v3 sağlayıcısı , reCAPTCHA Enterprise sağlayıcısı veya özel bir sağlayıcı kullanarak uygulamanıza Uygulama Kontrolü ekleyin.

Arka uç istekleriyle Uygulama Kontrolü belirteçleri gönderin

Uygulama istemcinizde, her istekten önce, appCheck().getToken() ile geçerli, süresi dolmamış bir Uygulama Kontrolü belirteci alın. Uygulama Kontrolü kitaplığı, gerekirse belirteci yenileyecektir.

Geçerli bir jetonunuz olduğunda, bunu istekle birlikte arka ucunuza gönderin. Bunu nasıl gerçekleştireceğinizin ayrıntıları size bağlıdır, ancak Uygulama Kontrolü belirteçlerini URL'lerin bir parçası olarak göndermeyin , sorgu parametreleri dahil, çünkü bu onları yanlışlıkla sızıntıya ve ele geçirmeye karşı savunmasız hale getirir. Aşağıdaki örnek, belirteci önerilen yaklaşım olan özel bir HTTP başlığında gönderir.

Web modular API

import { initializeAppCheck, getToken } from 'firebase/app-check';

const appCheck = initializeAppCheck(
    app,
    { provider: provider } // ReCaptchaV3Provider or CustomProvider
);

const callApiWithAppCheckExample = async () => {
  let appCheckTokenResponse;
  try {
      appCheckTokenResponse = await getToken(appCheck, /* forceRefresh= */ false);
  } catch (err) {
      // Handle any errors if the token was not retrieved.
      return;
  }

  // Include the App Check token with requests to your server.
  const apiResponse = await fetch('https://yourbackend.example.com/yourApiEndpoint', {
      headers: {
          'X-Firebase-AppCheck': appCheckTokenResponse.token,
      }
  });

  // Handle response from your backend.
};

Web namespaced API

const callApiWithAppCheckExample = async () => {
  let appCheckTokenResponse;
  try {
      appCheckTokenResponse = await firebase.appCheck().getToken(/* forceRefresh= */ false);
  } catch (err) {
      // Handle any errors if the token was not retrieved.
      return;
  }

  // Include the App Check token with requests to your server.
  const apiResponse = await fetch('https://yourbackend.example.com/yourApiEndpoint', {
      headers: {
          'X-Firebase-AppCheck': appCheckTokenResponse.token,
      }
  });

  // Handle response from your backend.
};

Tekrar koruması (beta)

Yeniden oynatma korumasını etkinleştirdiğiniz bir uç noktaya istekte bulunurken, getToken() getLimitedUseToken() kullanarak bir belirteç edinin:

import { getLimitedUseToken } from "firebase/app-check";

// ...

appCheckTokenResponse = await getLimitedUseToken(appCheck);