حماية الموارد التي لا تتبع 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);