SafetyNet Safebrowsing API, ספרייה שמופעלת על ידי Google Play Services, מספק שירותים שמאפשרים לקבוע אם כתובת URL סומנה כאיום ידוע על ידי Google.
האפליקציה שלכם יכולה להשתמש ב-API הזה כדי לקבוע אם כתובת URL מסוימת סווגה על ידי Google כאיום ידוע. באופן פנימי, SafetyNet מטמיע לקוח לפרוטוקול הרשת של הגלישה הבטוחה בגרסה 4 שפותח על ידי Google. גם קוד הלקוח וגם פרוטוקול הרשת בגרסה 4 תוכננו כדי לשמור על פרטיות המשתמשים ולצמצם את צריכת הסוללה ואת רוחב הפס. אפשר להשתמש ב-API הזה כדי לנצל את מלוא היתרונות של שירות הגלישה הבטוחה של Google ב-Android בצורה הכי יעילה מבחינת משאבים, בלי להטמיע את פרוטוקול הרשת שלו.
במסמך הזה מוסבר איך להשתמש ב-SafetyNet Safe Browsing Lookup API כדי לבדוק אם כתובת URL מסוימת מכילה איומים ידועים.
תנאים והגבלות
השימוש ב-Safe Browsing API מבטא את הסכמתכם לתנאים ולהגבלות. לפני שמשתמשים ב-Safe Browsing API, צריך לקרוא ולהבין את כל התנאים וההגבלות ותנאי המדיניות החלים.
בקשה ורישום של מפתח Android API
לפני שמשתמשים ב-Safe Browsing API, צריך ליצור ולרשום מפתח API ל-Android. להוראות ספציפיות, ראו תחילת העבודה עם גלישה בטוחה.
הוספת התלות ב-SafetyNet API
לפני שמשתמשים ב-Safe Browsing API, צריך להוסיף את SafetyNet API לפרויקט. אם משתמשים ב-Android Studio, צריך להוסיף את התלות הזאת לקובץ Gradle ברמת האפליקציה. מידע נוסף זמין במאמר הגנה מפני איומי אבטחה באמצעות SafetyNet.
איך מפעילים את ה-API
כדי להשתמש ב-Safe Browsing API, צריך לאתחל את ה-API באמצעות קריאה ל-initSafeBrowsing()
ולהמתין להשלמתה. קטע הקוד הבא הוא דוגמה לכך:
Kotlin
Tasks.await(SafetyNet.getClient(this).initSafeBrowsing())
Java
Tasks.await(SafetyNet.getClient(this).initSafeBrowsing());
שליחת בקשה לבדיקת כתובת URL
האפליקציה יכולה להשתמש בבדיקת כתובות URL כדי לקבוע אם כתובת URL מסוימת מהווה איום ידוע. יכול להיות שחלק מסוגי האיומים לא יעניינו את האפליקציה שלכם, כי באמצעות ה-API תוכלו לבחור אילו סוגי איומים חשובים לצרכים שלכם. אפשר לציין כמה סוגים של איומים ידועים.
שליחת הבקשה לבדיקת כתובת ה-URL
ה-API לא תלוי בסכימה שבה משתמשים, כך שאפשר להעביר את כתובת ה-URL עם או בלי סכימה. לדוגמה, גם
Kotlin
var url = "https://www.google.com"
Java
String url = "https://www.google.com";
וגם
Kotlin
var url = "www.google.com"
Java
String url = "www.google.com";
תקפים.
הקוד הבא מראה איך שולחים בקשה לבדיקה של כתובת URL:
Kotlin
SafetyNet.getClient(this).lookupUri( url, SAFE_BROWSING_API_KEY, SafeBrowsingThreat.TYPE_POTENTIALLY_HARMFUL_APPLICATION, SafeBrowsingThreat.TYPE_SOCIAL_ENGINEERING ) .addOnSuccessListener(this) { sbResponse -> // Indicates communication with the service was successful. // Identify any detected threats. if (sbResponse.detectedThreats.isEmpty()) { // No threats found. } else { // Threats found! } } .addOnFailureListener(this) { e: Exception -> if (e is ApiException) { // An error with the Google Play Services API contains some // additional details. Log.d(TAG, "Error: ${CommonStatusCodes.getStatusCodeString(e.statusCode)}") // Note: If the status code, s.statusCode, // is SafetyNetStatusCode.SAFE_BROWSING_API_NOT_INITIALIZED, // you need to call initSafeBrowsing(). It means either you // haven't called initSafeBrowsing() before or that it needs // to be called again due to an internal error. } else { // A different, unknown type of error occurred. Log.d(TAG, "Error: ${e.message}") } }
Java
SafetyNet.getClient(this).lookupUri(url, SAFE_BROWSING_API_KEY, SafeBrowsingThreat.TYPE_POTENTIALLY_HARMFUL_APPLICATION, SafeBrowsingThreat.TYPE_SOCIAL_ENGINEERING) .addOnSuccessListener(this, new OnSuccessListener<SafetyNetApi.SafeBrowsingResponse>() { @Override public void onSuccess(SafetyNetApi.SafeBrowsingResponse sbResponse) { // Indicates communication with the service was successful. // Identify any detected threats. if (sbResponse.getDetectedThreats().isEmpty()) { // No threats found. } else { // Threats found! } } }) .addOnFailureListener(this, new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { // An error occurred while communicating with the service. if (e instanceof ApiException) { // An error with the Google Play Services API contains some // additional details. ApiException apiException = (ApiException) e; Log.d(TAG, "Error: " + CommonStatusCodes .getStatusCodeString(apiException.getStatusCode())); // Note: If the status code, apiException.getStatusCode(), // is SafetyNetStatusCode.SAFE_BROWSING_API_NOT_INITIALIZED, // you need to call initSafeBrowsing(). It means either you // haven't called initSafeBrowsing() before or that it needs // to be called again due to an internal error. } else { // A different, unknown type of error occurred. Log.d(TAG, "Error: " + e.getMessage()); } } });
קריאת התשובה לבדיקת כתובת ה-URL
באמצעות האובייקט SafetyNetApi.SafeBrowsingResponse
שמוחזר, קוראים לשיטה getDetectedThreats()
שלו, שמחזירה רשימה של אובייקטים מסוג SafeBrowsingThreat
. אם הרשימה שחוזרת ריקה, ה-API לא זיהה איומים ידועים.
אם הרשימה לא ריקה, צריך להפעיל את getThreatType()
לכל רכיב ברשימה כדי לקבוע אילו איומים ידועים זוהו על ידי ה-API.
כדי לראות הצעות לשפת האזהרה, ראו מדריך למפתחים בנושא גלישה בטוחה בממשק API.
ציון סוגי עניין של איומים
הקבועים בכיתה SafeBrowsingThreat
מכילים את סוגי האיומים הנתמכים כרגע:
סוג האיום | הגדרה |
---|---|
TYPE_POTENTIALLY_HARMFUL_APPLICATION |
סוג האיום הזה מזהה כתובות URL של דפים שסומנו כמכילות אפליקציות שעלולות להזיק. |
TYPE_SOCIAL_ENGINEERING |
סוג האיום הזה מזהה כתובות URL של דפים שסומנו כמכילים איומי הנדסה חברתית. |
כשמשתמשים ב-API, מוסיפים ערכי קבוע של סוג האיום כארגומנטים. אפשר להוסיף כמה קבועים של סוגי איומים שרוצים באפליקציה, אבל אפשר להשתמש רק בקבועים שלא מסומנים כמיושנים.
השבתת הסשן של הגלישה הבטוחה
אם לאפליקציה שלכם אין צורך להשתמש ב-Safe Browsing API למשך זמן ממושך, כדאי לבדוק את כל כתובות ה-URL הנדרשות באפליקציה ולאחר מכן לסגור את הסשן של Safe Browsing באמצעות השיטה shutdownSafeBrowsing()
:
Kotlin
SafetyNet.getClient(this).shutdownSafeBrowsing()
Java
SafetyNet.getClient(this).shutdownSafeBrowsing();
מומלץ לקרוא ל-shutdownSafeBrowsing()
בשיטה onPause()
של הפעילות, ולקרוא ל-initSafeBrowsing()
בשיטה onResume()
של הפעילות. עם זאת, חשוב לוודא שהפעלת initSafeBrowsing()
הסתיימה לפני שמפעילים את lookupUri()
.
אם תדאגו שהסשן תמיד יהיה עדכני, תוכלו לצמצם את הסיכוי לשגיאות פנימיות באפליקציה.
נתונים שנאספים על ידי SafetyNet Safe Browsing API
כש-SafetyNet Safe Browsing API מתקשר עם שירות הגלישה הבטוחה ב-Android, הוא אוסף באופן אוטומטי את הנתונים הבאים:
נתונים | תיאור |
---|---|
פעילות באפליקציות | איסוף קידומת גיבוב של כתובות URL אחרי התאמת קידומת של גיבוב מקומי למטרות זיהוי כתובות URL זדוניות. |
אנחנו משתדלים לשמור על שקיפות רבה ככל האפשר, אבל באחריותך הבלעדית להחליט איך להגיב לטופס של סעיף אבטחת הנתונים של Google Play בנוגע לאיסוף נתוני המשתמשים, לשיתוף שלהם ולנוהלי האבטחה באפליקציה.