Check out what’s new from Firebase at Google I/O 2022. Learn more

אפשר בדיקת אפליקציה עם App Attest בפלטפורמות של Apple

דף זה מראה לך כיצד להפעיל App Check באפליקציית Apple, באמצעות ספק App Attest המובנה. כשאתה מפעיל App Check, אתה עוזר להבטיח שרק האפליקציה שלך יכולה לגשת למשאבי Firebase של הפרויקט שלך. ראה סקירה כללית של תכונה זו.

App Check משתמש ב- App Attest כדי לוודא שבקשות לשירותי Firebase מגיעות מהאפליקציה האותנטית שלך. App Check כרגע לא משתמש ב-App Attest כדי לנתח את הסיכון להונאה .

אם ברצונך להשתמש ב-App Check עם ספק מותאם אישית משלך, ראה יישום ספק App Check מותאם אישית .

1. הגדר את פרויקט Firebase שלך

  1. תזדקק ל-Xcode 12.5+ כדי להשתמש ב-App Attest.

  2. הוסף את Firebase לפרויקט Apple שלך ​​אם עדיין לא עשית זאת.

  3. רשום את האפליקציות שלך כדי להשתמש ב-App Check עם ספק App Attest בקטע App Check של מסוף Firebase.

    בדרך כלל עליך לרשום את כל האפליקציות של הפרויקט שלך, מכיוון שברגע שתפעיל אכיפה עבור מוצר Firebase, רק אפליקציות רשומות יוכלו לגשת למשאבי הקצה האחורי של המוצר.

  4. אופציונלי : בהגדרות רישום האפליקציה, הגדר זמן מותאם אישית עד לחיות (TTL) עבור אסימוני App Check שהונפקו על ידי הספק. אתה יכול להגדיר את ה-TTL לכל ערך בין 30 דקות ל-7 ימים. בעת שינוי ערך זה, שים לב להפרעות הבאות:

    • אבטחה: TTLs קצרים יותר מספקים אבטחה חזקה יותר, מכיוון שהיא מצמצמת את החלון שבו אסימון שדלף או יורט יכול להיות מנוצל לרעה על ידי תוקף.
    • ביצועים: TTL קצר יותר אומר שהאפליקציה שלך תבצע אישור בתדירות גבוהה יותר. מכיוון שתהליך אישור האפליקציה מוסיף זמן אחזור לבקשות הרשת בכל פעם שהוא מבוצע, TTL קצר יכול להשפיע על ביצועי האפליקציה שלך.
    • מכסה ועלות: TTL קצרים יותר ואישור חוזר תכוף מוציאים את המכסה שלך מהר יותר, ועבור שירותים בתשלום, פוטנציאל לעלות יותר. ראה מכסות ומגבלות .

    ברירת המחדל של TTL של שעה אחת היא סבירה עבור רוב האפליקציות. שים לב שספריית App Check מרעננת אסימונים בערך במחצית משך ה-TTL.

2. הוסף את ספריית App Check לאפליקציה שלך

  1. הוסף את התלות עבור App Check ל- Podfile של הפרויקט שלך:

    pod 'FirebaseAppCheck'

    לחלופין, אתה יכול להשתמש ב- Swift Package Manager במקום זאת.

    ודא שאתה משתמש גם בגרסה העדכנית ביותר של כל ערכות Firebase SDK אחרות שאתה תלוי בהן.

  2. הפעל את pod install ופתח את קובץ ה-. .xcworkspace שנוצר.

  3. ב-Xcode, הוסף את יכולת App Attest לאפליקציה שלך.

  4. בקובץ .entitlements של הפרויקט שלך, הגדר את סביבת App Attest production .

3. אתחול App Check

יהיה עליך לאתחל את App Check לפני שתשתמש ב-SDKs אחר של Firebase.

ראשית, כתוב יישום של AppCheckProviderFactory . הפרטים של היישום שלך יהיו תלויים במקרה השימוש שלך.

לדוגמה, אם יש לך רק משתמשים ב-iOS 14 ואילך, אתה פשוט תמיד יכול ליצור אובייקטים AppAttestProvider :

מָהִיר

הערה: מוצר Firebase זה אינו זמין ביעדי watchOS.

class YourSimpleAppCheckProviderFactory: NSObject, AppCheckProviderFactory {
  func createProvider(with app: FirebaseApp) -> AppCheckProvider? {
    return AppAttestProvider(app: app)
  }
}

Objective-C

הערה: מוצר Firebase זה אינו זמין ביעדי watchOS.

@interface YourSimpleAppCheckProviderFactory : NSObject <FIRAppCheckProviderFactory>
@end

@implementation YourSimpleAppCheckProviderFactory

- (nullable id<FIRAppCheckProvider>)createProviderWithApp:(nonnull FIRApp *)app {
  return [[FIRAppAttestProvider alloc] initWithApp:app];
}

@end

לחלופין, אתה יכול ליצור אובייקטים AppAttestProvider ב-iOS 14 ואילך, ולחזור ל- DeviceCheckProvider בגרסאות קודמות:

מָהִיר

הערה: מוצר Firebase זה אינו זמין ביעדי watchOS.

class YourAppCheckProviderFactory: NSObject, AppCheckProviderFactory {
  func createProvider(with app: FirebaseApp) -> AppCheckProvider? {
    if #available(iOS 14.0, *) {
      return AppAttestProvider(app: app)
    } else {
      return DeviceCheckProvider(app: app)
    }
  }
}

Objective-C

הערה: מוצר Firebase זה אינו זמין ביעדי watchOS.

@interface YourAppCheckProviderFactory : NSObject <FIRAppCheckProviderFactory>
@end

@implementation YourAppCheckProviderFactory

- (nullable id<FIRAppCheckProvider>)createProviderWithApp:(nonnull FIRApp *)app {
  if (@available(iOS 14.0, *)) {
    return [[FIRAppAttestProvider alloc] initWithApp:app];
  } else {
    return [[FIRDeviceCheckProvider alloc] initWithApp:app];
  }
}

@end

לאחר שיישמת מחלקה של AppCheckProviderFactory , הגדר את App Check להשתמש בה:

מָהִיר

הערה: מוצר Firebase זה אינו זמין ביעדי watchOS.

let providerFactory = YourAppCheckProviderFactory()
AppCheck.setAppCheckProviderFactory(providerFactory)

FirebaseApp.configure()

Objective-C

הערה: מוצר Firebase זה אינו זמין ביעדי watchOS.

YourAppCheckProviderFactory *providerFactory =
        [[YourAppCheckProviderFactory alloc] init];
[FIRAppCheck setAppCheckProviderFactory:providerFactory];

[FIRApp configure];

לאחר התקנת ספריית App Check באפליקציה שלך, התחל להפיץ את האפליקציה המעודכנת למשתמשים שלך.

אפליקציית הלקוח המעודכנת תתחיל לשלוח אסימוני App Check יחד עם כל בקשה שהיא תגיש ל-Firebase, אך מוצרי Firebase לא ידרשו שהאסימונים יהיו תקפים עד שתפעיל אכיפה בקטע App Check של מסוף Firebase. עיין בשני הסעיפים הבאים לפרטים.

5. מעקב אחר מדדי בקשות

כעת, כשהאפליקציה המעודכנת שלך נמצאת בידי המשתמשים, אתה יכול לאפשר אכיפה של App Check עבור מוצרי Firebase שבהם אתה משתמש. עם זאת, לפני שתעשה זאת, עליך לוודא שהפעולה הזו לא תפריע למשתמשים החוקיים הקיימים שלך.

מסד נתונים בזמן אמת, Cloud Firestore ואחסון בענן

כלי חשוב שאתה יכול להשתמש בו כדי לקבל החלטה זו עבור מסד נתונים בזמן אמת, Cloud Firestore ו-Cloud Storage הוא מסך מדדי הבקשה של App Check.

כדי להציג את מדדי בקשת בדיקת האפליקציה עבור מוצר, פתח את הקטע בדיקת אפליקציות במסוף Firebase. לדוגמה:

צילום מסך של דף מדדי בדיקת האפליקציה

מדדי הבקשות עבור כל מוצר מחולקים לארבע קטגוריות:

  • בקשות מאומתות הן בקשות שיש להן אסימון App Check תקף. לאחר שתפעיל את אכיפת בדיקת האפליקציה, רק בקשות בקטגוריה זו יצליחו.

  • בקשות לקוח מיושנות הן אלו שחסר בהן אסימון App Check. בקשות אלה עשויות להיות מגרסה ישנה יותר של Firebase SDK לפני בדיקת האפליקציה נכללה באפליקציה.

  • בקשות מקור לא ידועות הן אלו שחסר להן אסימון App Check, ולא נראה שהן מגיעות מה-SDK של Firebase. אלה עשויים להיות מבקשות שנעשו עם מפתחות API גנובים או בקשות מזויפות שנעשו ללא Firebase SDK.

  • בקשות לא חוקיות הן בקשות שיש להן אסימון App Check לא חוקי, שעשוי להיות מלקוח לא אותנטי שמנסה להתחזות לאפליקציה שלך, או מסביבות מחקות.

ההפצה של קטגוריות אלו עבור האפליקציה שלך צריכה להודיע ​​​​כאשר תחליט לאפשר אכיפה. הנה כמה קווים מנחים:

  • אם כמעט כל הבקשות האחרונות הן מלקוחות מאומתים, שקול לאפשר אכיפה כדי להתחיל להגן על משאבי הקצה האחורי שלך.

  • אם חלק ניכר מהבקשות האחרונות מגיעות מלקוחות שסביר להניח שלא מעודכנים, כדי למנוע הפרעה למשתמשים, שקול לחכות שמשתמשים נוספים יעדכנו את האפליקציה שלך לפני שתפעיל אכיפה. אכיפת בדיקת אפליקציות על אפליקציה שפורסמה תשבור גרסאות קודמות של אפליקציה שאינן משולבות ב-App Check SDK.

  • אם האפליקציה שלך עדיין לא הושקה, עליך להפעיל מיד את אכיפת בדיקת האפליקציה, מכיוון שאין לקוחות מיושנים בשימוש.

פונקציות ענן

עבור פונקציות ענן, אתה יכול לקבל מדדי בדיקת אפליקציות על ידי בחינת יומני הפונקציות שלך. כל הפעלת פונקציה הניתנת להתקשרות פולטת ערך יומן מובנה כמו הדוגמה הבאה:

{
  "severity": "INFO",    // INFO, WARNING, or ERROR
  "logging.googleapis.com/labels": {"firebase-log-type": "callable-request-verification"},
  "jsonPayload": {
    "message": "Callable header verifications passed.",
    "verifications": {
      // ...
      "app": "MISSING",  // VALID, INVALID, or MISSING
    }
  }
}

אתה יכול לנתח את המדדים האלה ב-Google Cloud Console על ידי יצירת מדד נגד מבוסס יומנים עם מסנן הערכים הבא:

resource.type="cloud_function"
resource.labels.function_name="YOUR_CLOUD_FUNCTION"
resource.labels.region="us-central1"
labels.firebase-log-type="callable-request-verification"

תווית את המדד באמצעות השדה jsonPayload.verifications.appCheck .

6. אפשר אכיפה

כדי לאפשר אכיפה, עקוב אחר ההוראות עבור כל מוצר, להלן. לאחר שתפעיל אכיפה עבור מוצר, כל הבקשות הלא מאומתות למוצר זה יידחו.

מסד נתונים בזמן אמת, Cloud Firestore ואחסון בענן

כדי לאפשר אכיפה עבור מסד נתונים בזמן אמת, Cloud Firestore (iOS ו-Android) ואחסון בענן:

  1. פתח את הקטע App Check של מסוף Firebase.

  2. הרחב את תצוגת המדדים של המוצר שעבורו ברצונך להפעיל אכיפה.

  3. לחץ על אכוף ואשר את בחירתך.

שים לב שיחלפו עד 15 דקות לאחר הפעלת האכיפה עד שהוא ייכנס לתוקף.

פונקציות ענן

ראה הפעלת אכיפה של בדיקת אפליקציות עבור פונקציות ענן .

הצעדים הבאים

אם, לאחר שרשמת את האפליקציה שלך ל-App Check, אתה רוצה להפעיל את האפליקציה שלך בסביבה שבדרך כלל לא תסווג את App Check כתקף, כגון סימולטור במהלך הפיתוח, או מסביבת אינטגרציה מתמשכת (CI), תוכל צור בניית באגים של האפליקציה שלך שמשתמשת בספק ניפוי באגים של App Check במקום בספק אישור אמיתי.

ראה שימוש ב-App Check עם ספק ניפוי הבאגים בפלטפורמות של Apple .