قم بحماية الموارد غير التابعة لـ Firebase من خلال التحقق من التطبيق في تطبيقات الويب

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

قبل ان تبدأ

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

إرسال الرموز المميزة للتحقق من التطبيق مع طلبات الواجهة الخلفية

في عميل التطبيق الخاص بك، قبل كل طلب، احصل على رمز التحقق من التطبيق صالح وغير منتهي الصلاحية باستخدام appCheck().getToken() . ستقوم مكتبة التحقق من التطبيق بتحديث الرمز المميز إذا لزم الأمر.

بمجرد حصولك على رمز صالح، قم بإرساله مع الطلب إلى الواجهة الخلفية لديك. إن تفاصيل كيفية تحقيق ذلك متروك لك، ولكن لا ترسل رموز التحقق من التطبيق كجزء من عناوين URL ، بما في ذلك معلمات الاستعلام، لأن هذا يجعلها عرضة للتسرب والاعتراض غير المقصود. يرسل المثال التالي الرمز المميز في رأس HTTP مخصص، وهو الأسلوب الموصى به.

Web modular API

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 namespaced API

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);