בדף הזה מוסבר איך להפעיל את App Check באפליקציית Flutter באמצעות ספקי ברירת המחדל: Play Integrity ב-Android, Device Check בפלטפורמות של Apple ו-reCAPTCHA גרסה 3 באינטרנט. כשמפעילים את App Check, מוודאים שרק האפליקציה שלכם יכולה לגשת למשאבי Firebase של הפרויקט. סקירה כללית של התכונה
1. הגדרת פרויקט Firebase
מתקינים ומפעילים את FlutterFire אם עוד לא עשיתם זאת.
כדי לרשום את האפליקציות לשימוש ב-App Check עם הספקים Play Integrity, Device Check ו-reCAPTCHA, עוברים אל Project Settings > App Check (הגדרות הפרויקט > App Check) במסוף Firebase.
בדרך כלל צריך לרשום את כל האפליקציות בפרויקט, כי אחרי שמפעילים אכיפה של מוצר Firebase, רק אפליקציות רשומות יכולות לגשת למשאבי ה-Backend של המוצר.
אופציונלי: בהגדרות של רישום האפליקציה, מגדירים אורך חיים (TTL) מותאם אישית לטוקנים של App Check שהונפקו על ידי הספק. אפשר להגדיר את ה-TTL לכל ערך בין 30 דקות ל-7 ימים. כשמשנים את הערך הזה, חשוב להביא בחשבון את הפשרות הבאות:
- אבטחה: ערכי TTL קצרים יותר מספקים אבטחה חזקה יותר, כי הם מצמצמים את חלון הזמן שבו תוקף יכול לנצל לרעה אסימון שדלף או נחטף.
- ביצועים: ערכי TTL קצרים יותר אומרים שהאפליקציה תבצע אימות בתדירות גבוהה יותר. תהליך אימות האפליקציה מוסיף זמן אחזור לבקשות רשת בכל פעם שהוא מתבצע, ולכן ערך TTL קצר יכול להשפיע על ביצועי האפליקציה.
- מכסת השימוש והעלות: ערכי TTL קצרים ואימות חוזר תכוף מנצלים את מכסת השימוש מהר יותר, ובשירותים בתשלום, עלולים לייקר את העלות. מידע נוסף זמין במאמר מכסות ומגבלות.
ערך ברירת המחדל של TTL סביר לרוב האפליקציות. שימו לב: ספרייית App Check מרעננת את האסימונים בערך במחצית משך הזמן לתפוגה (TTL).
2. הוספת ספריית App Check לאפליקציה
מריצים את הפקודה הבאה כדי להתקין את הפלאגין מהרמה הבסיסית (root) של פרויקט Flutter:
flutter pub add firebase_app_checkבסיום התהליך, צריך לבנות מחדש את אפליקציית Flutter:
flutter run
3. הפעלת App Check
מוסיפים את קוד האתחול הבא לאפליקציה כדי שהוא יפעל לפני שמשתמשים בשירותי Firebase כמו Storage, אבל אחרי הקריאה ל-Firebase.initializeApp();
import 'package:flutter/material.dart';
import 'package:firebase_core/firebase_core.dart';
// Import the firebase_app_check plugin
import 'package:firebase_app_check/firebase_app_check.dart';
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
await FirebaseAppCheck.instance.activate(
// You can also use a `ReCaptchaEnterpriseProvider` provider instance as an
// argument for `webProvider`
webProvider: ReCaptchaV3Provider('recaptcha-v3-site-key'),
// Default provider for Android is the Play Integrity provider. You can use the "AndroidProvider" enum to choose
// your preferred provider. Choose from:
// 1. Debug provider
// 2. Safety Net provider
// 3. Play Integrity provider
androidProvider: AndroidProvider.debug,
// Default provider for iOS/macOS is the Device Check provider. You can use the "AppleProvider" enum to choose
// your preferred provider. Choose from:
// 1. Debug provider
// 2. Device Check provider
// 3. App Attest provider
// 4. App Attest provider with fallback to Device Check provider (App Attest provider is only available on iOS 14.0+, macOS 14.0+)
appleProvider: AppleProvider.appAttest,
);
runApp(App());
}
השלבים הבאים
אחרי שמתקינים את ספריית App Check באפליקציה, מתחילים להפיץ את האפליקציה המעודכנת למשתמשים.
אפליקציית הלקוח המעודכנת תתחיל לשלוח טוקנים של App Check עם כל בקשה שהיא שולחת ל-Firebase, אבל מוצרי Firebase לא ידרשו שהטוקנים יהיו תקפים עד שתפעילו את האכיפה בקטע App Check במסוף Firebase.
מעקב אחרי מדדים והפעלת אכיפה
עם זאת, לפני שמפעילים את האכיפה, צריך לוודא שהפעולה הזו לא תשפיע על משתמשים קיימים לגיטימיים. מצד שני, אם אתם רואים שימוש חשוד במשאבי האפליקציה, כדאי להפעיל את האכיפה מוקדם יותר.
כדי לקבל החלטה מושכלת, אפשר לעיין במדדים של App Check לגבי השירותים שבהם אתם משתמשים:
- מעקב אחרי מדדי בקשות של App Check עבור מסד נתונים בזמן אמת, Cloud Firestore, Cloud Storage ואימות.
- ניטור מדדי בקשות של App Check ב-Cloud Functions
הפעלת האכיפה של App Check
אחרי שתבינו איך App Check ישפיע על המשתמשים שלכם ותהיו מוכנים להמשיך, תוכלו להפעיל את האכיפה של App Check:
- הפעלת האכיפה של App Check עבור מסד נתונים בזמן אמת, Cloud Firestore, Cloud Storage ואימות.
- הפעלת האכיפה של App Check ב-Cloud Functions
שימוש ב-App Check בסביבות ניפוי באגים
אם אחרי שרשמתם את האפליקציה ל-App Check, אתם רוצים להריץ אותה בסביבה ש-App Check בדרך כלל לא מסווג כסביבה תקפה, כמו אמולטור במהלך פיתוח או מסביבת שילוב רציף (CI), אתם יכולים ליצור גרסת build לניפוי באגים של האפליקציה שמשתמשת בספק ניפוי הבאגים של App Check במקום בספק אימות אמיתי.
אפשר לעיין במאמר בנושא שימוש ב-App Check עם ספק ניפוי הבאגים באפליקציות Flutter.