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

Firebase App Check מספק הגנה על קריאות מהאפליקציה שלכם ל-Google Maps Platform, על ידי חסימת תעבורת נתונים שמגיעה ממקורות שאינם אפליקציות לגיטימיות. כדי לעשות את זה, הוא בודק אם יש טוקן מספק אימות כמו reCAPTCHA Enterprise. שילוב האפליקציות עם App Check עוזר להגן מפני בקשות זדוניות, כדי שלא תחויבו על קריאות לא מורשות ל-API.

האם App Check מתאים לי?

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

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

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

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

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

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

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

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

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

  • אחד מספקי האימות שאנחנו ממליצים עליהם, reCAPTCHA Enterprise, גובה תשלום על יותר מ-10,000 בדיקות בחודש.

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

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

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

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

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

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

  • אפליקציה שנטענה בה הגרסה השבועית או הרבעונית האחרונה של Maps JS API, וגם ספריות הליבה והמקומות.
  • פרויקט בענן שבו מופעלים ממשקי ה-API של Maps JS ו-Places API (חדש).
  • אתם צריכים להיות הבעלים של האפליקציה ב-מסוף Cloud.
  • צריך את מזהה הפרויקט של האפליקציה מ-Cloud Console

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

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

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

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

שלב 3: טעינת ספריות של Maps JavaScript API

  1. טוענים את הספריות Core, ‏ Maps ו-Places, כמו שמוצג בקטע הקוד הבא. מידע נוסף והוראות זמינים במסמכי התיעוד של Maps JavaScript API Place Class.

    async function init() {
      const {Settings} = await google.maps.importLibrary('core');
      const {Map} = await google.maps.importLibrary('maps');
      const {Place} = await google.maps.importLibrary('places');
    }  

שלב 4: מפעילים את Places API ואת App Check API

  1. מפעילים את App Check באמצעות ההגדרות שסופקו על ידי מסוף Firebase.
  2. מוודאים שהבקשות ל-Maps JS API מלוות באסימונים של App Check:
      async function init() {
        const {Settings} = await google.maps.importLibrary('core');
        const {Map} = await google.maps.importLibrary('maps');
        const {Place} = await google.maps.importLibrary('places');
      
        const app = initializeApp({
          // Your firebase configuration object
        });
      
        // Pass your reCAPTCHA Enterprise site key to initializeAppCheck().
        const appCheck = initializeAppCheck(app, {
          provider: new ReCaptchaEnterpriseProvider(
            'abcdefghijklmnopqrstuvwxy-1234567890abcd',
          ),
      
          // Optional argument. If true, the SDK automatically refreshes App Check
          // tokens as needed.
          isTokenAutoRefreshEnabled: true,
        });
      
        Settings.getInstance().fetchAppCheckToken = () =>
            getToken(appCheck, /* forceRefresh = */ false);
      
        // Make a Places JS request
        const place = new Place({id: 'ChIJN5Nz71W3j4ARhx5bwpTQEGg'});
        await place.fetchFields({fields: ['*']});
      
        // Load a map
        map = new Map(document.getElementById("map"), {
          center: { lat: 37.4161493, lng: -122.0812166 },
          zoom: 8,
        });
      }  
      

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

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

כדי לבדוק את האפליקציה באופן מקומי:

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

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

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

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

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

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