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

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

  • عدِّل برنامج تشغيل تطبيقك لإرسال رمز مميَّز App Check مع كل طلب إلى الخلفية، كما هو موضّح في هذه الصفحة.
  • عدِّل الخلفية لتطلب رمزًا مميزًا صالحًا لـ App Check مع كل طلب، على النحو الموضّح في مقالة التحقّق من رموز 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);