שימוש ב-App Check לאבטחת מפתח ה-API

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

האם בדיקת האפליקציה מתאימה לי?

מומלץ להשתמש ב-App Check ברוב המקרים, אבל אין צורך ב-App Check או שהוא לא נתמך במקרים הבאים:

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

סקירה כללית של שלבי ההטמעה

באופן כללי, אלה השלבים שצריך לבצע כדי לשלב את האפליקציה עם App Check:

  1. מוסיפים את Firebase לאפליקציה.
  2. הוספה של ספריית App Check ואיפוס שלה.
  3. מוסיפים את ספק האסימונים.
  4. מפעילים את ניפוי הבאגים.
  5. לעקוב אחרי הבקשות של האפליקציה ולהחליט על אכיפת המדיניות.

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

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

שיקולים בתכנון שילוב של App Check

אלה כמה דברים שכדאי להביא בחשבון כשמתכננים את השילוב:

  • ספק האימות שאנחנו ממליצים עליו, Play Integrity, מוגבל לקריאה יומית ברמת השימוש הרגילה ב-API. מידע נוסף על מגבלות השיחות זמין בדף הגדרה במסמכי העזרה למפתחים בנושא תקינות ב-Google Play.

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

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

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

שילוב האפליקציה עם App Check

דרישות מוקדמות ודרישות

  • אפליקציה עם Places SDK בגרסה 4.1 ואילך.
  • טביעת האצבע מסוג SHA-256 של האפליקציה.
  • שם החבילה של האפליקציה.
  • עליכם להיות הבעלים של האפליקציה במסוף Cloud.
  • עליכם למצוא את מזהה הפרויקט של האפליקציה במסוף Cloud.

שלב 1: מוסיפים את Firebase לאפליקציה

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

שלב 2: מוסיפים את הספרייה של App Check ומפעילים את App Check

מידע נוסף על השימוש ב-Play Integrity, ספק האימות שמוגדר כברירת מחדל, זמין במאמר תחילת השימוש ב-App Check עם Play Integrity ב-Android.

  1. אם עדיין לא עשיתם זאת, משלבים את Places SDK באפליקציה.
  2. בשלב הבא, מאתחלים את בדיקת האפליקציה ואת הלקוח של מפות Google.

    // Initialize App Check
    FirebaseApp.initializeApp(/*context=*/ this);
    FirebaseAppCheck firebaseAppCheck = FirebaseAppCheck.getInstance();
    firebaseAppCheck.installAppCheckProviderFactory(
            PlayIntegrityAppCheckProviderFactory.getInstance());
      
    // Initialize Places SDK
    Places.initializeWithNewPlacesApiEnabled(context, API_KEY);
    PlacesClient client = Places.createClient(context);.

שלב 3: מוסיפים את ספק האסימונים

אחרי שמפעילים את Places API, צריך להפעיל את setPlacesAppCheckTokenProvider() כדי להגדיר את PlacesAppCheckTokenProvider.

Places.initializeWithNewPlacesApiEnabled(context, API_KEY);
Places.setPlacesAppCheckTokenProvider(new TokenProvider());
PlacesClient client = Places.createClient(context);.

לפניכם דוגמה להטמעה של ממשק לאחזור אסימונים:

  /** Sample client implementation of App Check token fetcher interface. */
  static class TokenProvider implements PlacesAppCheckTokenProvider {
    @Override
    public ListenableFuture<String> fetchAppCheckToken() {
      SettableFuture<String> future = SettableFuture.create();
      FirebaseAppCheck.getInstance()
          .getAppCheckToken(false)
          .addOnSuccessListener(
              appCheckToken -> {
                future.set(appCheckToken.getToken());
              })
          .addOnFailureListener(
              ex -> {
                future.setException(ex);
              });

      return future;
    }
  }

שלב 4: הפעלת ניפוי באגים (אופציונלי)

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

כדי להריץ את האפליקציה במהדמ או במכשיר בדיקה:

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

כדי להריץ את האפליקציה בסביבת CI:

  • יוצרים אסימון ניפוי באגים במסוף Firebase ומוסיפים אותו למאגר המפתחות המאובטח של מערכת ה-CI.
  • מוסיפים את ספריית App Check לקובץ build.gradle.
  • מגדירים את גרסת ה-build של ה-CI כך שתשתמש באסימון לניפוי באגים.
  • עוטפים את הקוד בכיתות הבדיקה שצריך להשתמש בהן באסימון של App Check באמצעות DebugAppCheckTestHelper.
  • מידע נוסף והוראות מפורטות זמינים במסמכי התיעוד של App Check.

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

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

מידע נוסף והוראות מפורטות זמינים במסמכי התיעוד של Firebase App Check.