عندما تفهم كيف سيؤثر فحص التطبيق على المستخدمين لديك وأنت مستعد للمتابعة ، يمكنك تمكين فرض التحقق من التطبيق.
تمكين الإنفاذ
لبدء فرض متطلبات رمز التحقق من التطبيق في وظائف السحابة القابلة للاستدعاء ، قم بتعديل وظائفك للتحقق من وجود رموز التحقق من التطبيق الصالحة ، كما هو موضح أدناه. بمجرد تمكين التنفيذ ، سيتم رفض جميع الطلبات التي لم يتم التحقق منها.
قم بتثبيت حزمة SDK الخاصة بوظائف السحابة.
Node.js (الجيل الأول)
قم بتحديث تبعية
firebase-functions
في مشروعك إلى الإصدار 4.0.0 أو أحدث:npm install firebase-functions@">=4.0.0"
Node.js (الجيل الثاني)
قم بتحديث تبعية
firebase-functions
في مشروعك إلى الإصدار 4.0.0 أو أحدث:npm install firebase-functions@">=4.0.0"
بايثون (معاينة)
أضف
firebase-functions
إلىfunctions/requirements.txt
:firebase-functions >= 0.1.0
بعد ذلك ، قم بتحديث التبعيات في البيئة الافتراضية لمشروعك:
./venv/bin/pip install -r requirements.txt
قم بتمكين خيار وقت تشغيل فرض التحقق من التطبيق لوظيفتك:
Node.js (الجيل الأول)
const functions = require("firebase-functions/v1"); exports.yourV1CallableFunction = functions .runWith({ enforceAppCheck: true, // Reject requests with missing or invalid App Check tokens. }) .https.onCall((data, context) => { // context.app contains data from App Check, including the app ID. // Your function logic follows. ... });
Node.js (الجيل الثاني)
const { onCall } = require("firebase-functions/v2/https"); exports.yourV2CallableFunction = onCall( { enforceAppCheck: true, // Reject requests with missing or invalid App Check tokens. }, (request) => { // request.app contains data from App Check, including the app ID. // Your function logic follows. ... } );
بايثون (معاينة)
from firebase_functions import https_fn @https_fn.on_call( enforce_app_check=True # Reject requests with missing or invalid App Check tokens. ) def your_callable_function(req: https_fn.CallableRequest) -> https_fn.Response: # req.app contains data from App Check, including the app ID. # Your function logic follows. ...
أعد نشر وظائفك:
firebase deploy --only functions
بمجرد نشر هذه التغييرات ، ستتطلب وظائف السحابة القابلة للاستدعاء رموز التحقق من التطبيق الصالحة. تقوم SDKs الخاصة بعميل Cloud Functions تلقائيًا بإرفاق رمز مميز للتحقق من التطبيق عند استدعاء وظيفة قابلة للاستدعاء.
إعادة الحماية (تجريبي)
لحماية وظيفة قابلة للاستدعاء من هجمات إعادة التشغيل ، يمكنك استخدام رمز التحقق من التطبيق بعد التحقق منه. بمجرد استهلاك الرمز المميز ، لا يمكن استخدامه مرة أخرى.
لاحظ أن استخدام حماية إعادة التشغيل يضيف رحلة ذهابًا وإيابًا للشبكة للتحقق من الرمز المميز ، وبالتالي يضيف زمن انتقال إلى استدعاء وظيفة السحابة. لهذا السبب ، تعمل معظم التطبيقات عادةً على تمكين الحماية من إعادة التشغيل فقط على نقاط النهاية الحساسة بشكل خاص.
لاستهلاك الرموز ، اضبط consumeAppCheckToken
على true
في تعريف الوظيفة:
Node.js (الجيل الأول)
const functions = require("firebase-functions/v1");
exports.yourV1CallableFunction = functions
.runWith({
enforceAppCheck: true, // Reject requests with missing or invalid App Check tokens.
consumeAppCheckToken: true // Consume the token after verification.
})
.https.onCall((data, context) => {
// context.app contains data from App Check, including the app ID.
// Your function logic follows.
...
});
Node.js (الجيل الثاني)
const { onCall } = require("firebase-functions/v2/https");
exports.yourV2CallableFunction = onCall(
{
enforceAppCheck: true, // Reject requests with missing or invalid App Check tokens.
consumeAppCheckToken: true // Consume the token after verification.
},
(request) => {
// request.app contains data from App Check, including the app ID.
// Your function logic follows.
...
}
);
عند تمكين هذه الميزة لوظيفة سحابية معينة ، يجب عليك أيضًا تحديث رمز عميل التطبيق للحصول على الرموز المميزة القابلة للاستهلاك ذات الاستخدام المحدود عند استدعاء الوظيفة:
سويفت
let options = HTTPSCallableOptions(requireLimitedUseAppCheckTokens: true)
let yourCallableFunction =
Functions.functions().httpsCallable("yourCallableFunction", options: options)
do {
let result = try await yourCallableFunction.call()
} catch {
// ...
}
واجهة برمجة تطبيقات الويب المعيارية
import { getFunctions, httpsCallable } from "firebase/functions";
const yourCallableFunction = httpsCallable(
getFunctions(),
"yourCallableFunction",
{ limitedUseAppCheckTokens: true },
);
await yourCallableFunction();
Kotlin+KTX
val yourCallableFunction = Firebase.functions.getHttpsCallable("yourCallableFunction") {
limitedUseAppCheckTokens = true
}
val result = yourCallableFunction.call().await()
Java
HttpsCallableReference yourCallableFunction = FirebaseFunctions.getInstance().getHttpsCallable(
"yourCallableFunction",
new HttpsCallableOptions.Builder()
.setLimitedUseAppCheckTokens(true)
.build()
);
Task<HttpsCallableResult> result = yourCallableFunction.call();