שימוש ב-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:
- מוסיפים את Firebase לאפליקציה.
- הוספה של ספריית App Check ואיפוס שלה.
- מוסיפים את ספק האסימונים.
- מפעילים את ניפוי הבאגים.
- מעקב אחר הבקשות של האפליקציה והחלטות לגבי אכיפת המדיניות.
אחרי שתשלימו את השילוב עם App Check, תוכלו לראות מדדי תנועה לקצה העורפי במסוף Firebase. המדדים האלה מספקים פירוט של הבקשות לפי העובדה אם הן מלוות באסימון תקף של בדיקת האפליקציה. מידע נוסף זמין במסמכי התיעוד של Firebase App Check.
כשאתם בטוחים שרוב הבקשות מגיעות ממקורות לגיטימיים ושהמשתמשים עדכנו לגרסה האחרונה של האפליקציה שכוללת את ההטמעה שלכם של App Check, אתם יכולים להפעיל את האכיפה. אחרי שהאכיפה תופעל, מערכת App Check תדחה את כל התנועה ללא אסימון תקף של App Check.
שיקולים בתכנון שילוב של App Check
אלה כמה דברים שכדאי להביא בחשבון כשמתכננים את השילוב:
ספק האימות שאנחנו ממליצים עליו, Play Integrity, מוגבל לקריאה יומית ברמת השימוש הרגילה ב-API. מידע נוסף על מגבלות השיחות זמין בדף הגדרה במסמכי התיעוד למפתחים של Google Play Integrity.
אפשר גם להשתמש בספק אימות בהתאמה אישית, אבל זהו תרחיש לדוגמה מתקדם. מידע נוסף זמין במאמר הטמעת ספק מותאם אישית של App Check.
-
למשתמשים באפליקציה תהיה זמן אחזור מסוים בזמן ההפעלה. עם זאת, לאחר מכן, כל אימות מחדש תקופתי יתבצע ברקע, והמשתמשים לא אמורים לחוות יותר זמן אחזור. משך זמן האחזור המדויק בזמן ההפעלה תלוי בספק האימות שבחרתם.
משך הזמן שבו הטוקן של 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.
- אם עדיין לא עשיתם זאת, משלבים את Places SDK באפליקציה.
בשלב הבא, מאתחלים את App Check ואת הלקוח של Places.
// 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 כך שישתמש במפעל של ספק ניפוי הבאגים ב-build לניפוי באגים.
- מריצים את האפליקציה, וכך ייווצר טוקן ניפוי באגים מקומי. מוסיפים את האסימון הזה למסוף Firebase.
- מידע נוסף והוראות מפורטות זמינים במסמכי התיעוד של App Check.
כדי להריץ את האפליקציה בסביבת CI:
- יוצרים אסימון ניפוי באגים במסוף Firebase ומוסיפים אותו למאגר המפתחות המאובטח של מערכת ה-CI.
- מוסיפים את הספרייה של App Check לקובץ
build.gradle
. - מגדירים את גרסת ה-build של ה-CI כך שתשתמש באסימון לניפוי באגים.
- עוטפים את הקוד במחלקות הבדיקה שצריך להשתמש בו כדי לקבל אסימון של App Check באמצעות
DebugAppCheckTestHelper
. - מידע נוסף והוראות מפורטות זמינים במסמכי התיעוד של App Check.
שלב 5: מעקב אחר הבקשות של האפליקציה והחלטות לגבי אכיפה
לפני שמתחילים לאכוף את המדיניות, חשוב לוודא שלא תגרמו להפרעה למשתמשים חוקיים באפליקציה. כדי לעשות זאת, עוברים למסך המדדים של בדיקת האפליקציה כדי לראות איזה אחוז מהתנועה באפליקציה מאומתת, לא עדכנית או לא חוקית. אחרי שרוב התנועה תאומת, תוכלו להפעיל את האכיפה.
מידע נוסף והוראות מפורטות זמינים במסמכי התיעוד של Firebase App Check.