از منابع باطن سفارشی با بررسی برنامه در برنامه های وب محافظت کنید

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

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

قبل از اینکه شروع کنی

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

ارسال توکن‌های App Check با درخواست‌های backend

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

وقتی یک توکن معتبر داشتید، آن را همراه با درخواست به backend خود ارسال کنید. جزئیات نحوه انجام این کار به خودتان بستگی دارد، اما توکن‌های 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.
};

محافظت در برابر تکرار (بتا)

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

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

// ...

appCheckTokenResponse = await getLimitedUseToken(appCheck);