احمِ الموارد بخلاف Firebase باستخدام App Check في تطبيقات الويب

يمكنك حماية موارد تطبيقك بخلاف Firebase ، مثل الخلفيات المستضافة ذاتيًا ، باستخدام App Check. للقيام بذلك ، ستحتاج إلى تعديل عميل التطبيق الخاص بك لإرسال رمز التحقق من التطبيق جنبًا إلى جنب مع كل طلب إلى الواجهة الخلفية الخاصة بك ، وتعديل الواجهة الخلفية الخاصة بك لتتطلب رمز التحقق من التطبيق صالحًا مع كل طلب ؛ يتم وصف كلا المهمتين أدناه.

قبل ان تبدأ

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

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

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

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

إصدار الويب 9

const { initializeAppCheck, getToken } = require('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.
};

إصدار الويب 8

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.
};

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

في التعليمات البرمجية الخلفية الخاصة بك، إذا لم تكن قد قمت بالفعل بتثبيت نود.جي إس مشرف SDK ، أن تفعل ذلك. بعد ذلك ، أضف منطقًا إلى نقاط نهاية واجهة برمجة التطبيقات الخاصة بك والذي يقوم بما يلي:

  • تحقق من أن كل طلب يتضمن رمز التحقق من التطبيق.

  • التحقق من التحقق من التطبيقات رمز باستخدام SDK الادارية في appCheck().verifyToken() الأسلوب.

    إذا نجح التحقق، verifyToken() إرجاع التطبيقات فك تحقق رمزية. يشير التحقق الناجح إلى أن الرمز المميز نشأ من تطبيق ينتمي إلى مشروع Firebase الخاص بك.

رفض أي طلب يفشل أي من الشيكات. على سبيل المثال ، باستخدام برمجية Express.js الوسيطة:

const express = require('express');
const app = express();

const firebaseAdmin = require('firebase-admin');
const firebaseApp = firebaseAdmin.initializeApp();

const appCheckVerification = async (req, res, next) => {
    const appCheckToken = req.header('X-Firebase-AppCheck');

    if (!appCheckToken) {
        res.status(401);
        return next('Unauthorized');
    }

    try {
        const appCheckClaims = await firebaseAdmin.appCheck().verifyToken(appCheckToken);

        // If verifyToken() succeeds, continue with the next middleware
        // function in the stack.
        return next();
    } catch (err) {
        res.status(401);
        return next('Unauthorized');
    }
}

app.get('/yourApiEndpoint', [appCheckVerification], (req, res) => {
    // Handle request.
});