از منابع غیر Firebase با App Check in برنامه های وب محافظت کنید

می‌توانید با App Check از منابع غیر Firebase برنامه‌تان، مانند backends خود میزبانی‌شده محافظت کنید. برای انجام این کار، باید هر دو مورد زیر را انجام دهید:

  • مشتری برنامه خود را تغییر دهید تا یک نشانه App Check به همراه هر درخواست به باطن شما ارسال شود، همانطور که در این صفحه توضیح داده شده است.
  • باطن خود را طوری تغییر دهید که با هر درخواست، به یک نشانه معتبر App Check نیاز داشته باشید، همانطور که در تأیید نشانه‌های App Check از یک باطن سفارشی توضیح داده شده است.

قبل از شروع

با استفاده از ارائه‌دهنده reCAPTCHA Enterprise یا ارائه‌دهنده سفارشی ، App Check به برنامه خود اضافه کنید.

ارسال نشانه‌های App Check با درخواست‌های Backend

در سرویس گیرنده برنامه خود، قبل از هر درخواست، یک نشانه معتبر، منقضی نشده، App Check با appCheck().getToken() دریافت کنید. کتابخانه App Check توکن را در صورت لزوم بازخوانی می کند.

هنگامی که یک توکن معتبر دارید، آن را همراه با درخواست به باطن خود ارسال کنید. جزئیات نحوه انجام این کار به شما بستگی دارد، اما نشانه‌های App Check به عنوان بخشی از URLها، از جمله در پارامترهای پرس و جو، ارسال نکنید ، زیرا این باعث می‌شود آنها در برابر نشت تصادفی و رهگیری آسیب‌پذیر باشند. مثال زیر توکن را در یک هدر HTTP سفارشی می فرستد که رویکرد توصیه شده است.

Web

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

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.
};

حفاظت از پخش مجدد (بتا)

هنگام درخواست به نقطه پایانی که محافظت از پخش مجدد را برای آن فعال کرده اید، یک توکن با استفاده از getLimitedUseToken() به جای getToken() دریافت کنید:

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

// ...

appCheckTokenResponse = await getLimitedUseToken(appCheck);