حماية الموارد التي لا تتبع Firebase باستخدام ميزة "فحص التطبيق" في تطبيقات الويب

يمكنك حماية موارد تطبيقك التي ليست ضِمن Firebase، مثل الخلفيات التي تتم استضافتها ذاتيًا. مع App Check. ولإجراء ذلك، سيتعيّن عليك إجراء ما يلي:

قبل البدء

أضِف App Check إلى تطبيقك، باستخدام موفّر reCAPTCHA Enterprise أو مقدّم خدمة مخصّص.

إرسال رمزَين مميّزَين (App Check) مع طلبات الخلفية

قبل كل طلب، في برنامج تطبيقك، احصل على 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);