يمكنك حماية موارد تطبيقك غير التابعة لـ Firebase، مثل الواجهات الخلفية ذاتية الاستضافة، من خلال فحص التطبيق. للقيام بذلك، سوف تحتاج إلى القيام بكلا الإجراءين التاليين:
- قم بتعديل عميل تطبيقك لإرسال رمز التحقق من التطبيق مع كل طلب إلى الواجهة الخلفية لديك، كما هو موضح في هذه الصفحة.
- قم بتعديل الواجهة الخلفية الخاصة بك لتتطلب رمزًا صالحًا للتحقق من التطبيق مع كل طلب، كما هو موضح في التحقق من الرموز المميزة للتحقق من التطبيق من واجهة خلفية مخصصة .
قبل ان تبدأ
قم بإضافة التحقق من التطبيق إلى تطبيقك، باستخدام إما موفر Play Integrity الافتراضي أو موفر مخصص .
إرسال الرموز المميزة للتحقق من التطبيق مع طلبات الواجهة الخلفية
للتأكد من أن طلبات الواجهة الخلفية الخاصة بك تتضمن رمزًا صالحًا وغير منتهي الصلاحية للتحقق من التطبيق، قم بلف كل طلب في استدعاء getAppCheckToken()
. ستقوم مكتبة التحقق من التطبيق بتحديث الرمز المميز إذا لزم الأمر، ويمكنك الوصول إلى الرمز المميز في مستمع نجاح الطريقة.
بمجرد حصولك على رمز صالح، قم بإرساله مع الطلب إلى الواجهة الخلفية لديك. إن تفاصيل كيفية تحقيق ذلك متروك لك، ولكن لا ترسل رموز التحقق من التطبيق كجزء من عناوين URL ، بما في ذلك معلمات الاستعلام، لأن هذا يجعلها عرضة للتسرب والاعتراض غير المقصود. الطريقة الموصى بها هي إرسال الرمز المميز في رأس HTTP مخصص.
على سبيل المثال، إذا كنت تستخدم التعديل التحديثي:
Kotlin+KTX
class ApiWithAppCheckExample { interface YourExampleBackendService { @GET("yourExampleEndpoint") fun exampleData( @Header("X-Firebase-AppCheck") appCheckToken: String, ): Call<List<String>> } var yourExampleBackendService: YourExampleBackendService = Retrofit.Builder() .baseUrl("https://yourbackend.example.com/") .build() .create(YourExampleBackendService::class.java) fun callApiExample() { Firebase.appCheck.getAppCheckToken(false).addOnSuccessListener { appCheckToken -> val token = appCheckToken.token val apiCall = yourExampleBackendService.exampleData(token) // ... } } }
Java
public class ApiWithAppCheckExample { private interface YourExampleBackendService { @GET("yourExampleEndpoint") Call<List<String>> exampleData( @Header("X-Firebase-AppCheck") String appCheckToken); } YourExampleBackendService yourExampleBackendService = new Retrofit.Builder() .baseUrl("https://yourbackend.example.com/") .build() .create(YourExampleBackendService.class); public void callApiExample() { FirebaseAppCheck.getInstance() .getAppCheckToken(false) .addOnSuccessListener(new OnSuccessListener<AppCheckToken>() { @Override public void onSuccess(@NonNull AppCheckToken appCheckToken) { String token = appCheckToken.getToken(); Call<List<String>> apiCall = yourExampleBackendService.exampleData(token); // ... } }); } }
إعادة الحماية (تجريبية)
عند تقديم طلب إلى نقطة نهاية قمت بتمكين حماية إعادة التشغيل لها ، قم بلف الطلب في استدعاء getLimitedUseAppCheckToken()
بدلاً من getAppCheckToken()
:
Kotlin+KTX
Firebase.appCheck.limitedUseAppCheckToken.addOnSuccessListener { // ... }
Java
FirebaseAppCheck.getInstance() .getLimitedUseAppCheckToken().addOnSuccessListener( new OnSuccessListener<AppCheckToken>() { @Override public void onSuccess(AppCheckToken appCheckToken) { String token = appCheckToken.getToken(); // ... } } );