SafetyNet Safe Browsing API

SafetyNet Safe Browsing API, Google Play services की लाइब्रेरी है. इससे यह पता चलता है कि Google ने किसी यूआरएल को, खतरे के तौर पर मार्क किया है या नहीं.

आपका ऐप्लिकेशन इस एपीआई का इस्तेमाल करके, यह पता लगा सकता है कि Google ने किसी खास यूआरएल को खतरे के तौर पर मार्क किया है या नहीं. इंटरनल तौर पर, SafetyNet, Google के बनाए गए सेफ़ ब्राउज़िंग नेटवर्क प्रोटोकॉल v4 के लिए एक क्लाइंट लागू करता है. क्लाइंट कोड और v4 नेटवर्क प्रोटोकॉल, दोनों को उपयोगकर्ताओं की निजता को बनाए रखने और बैटरी और बैंडविड्थ की खपत को कम करने के लिए डिज़ाइन किया गया था. इस एपीआई का इस्तेमाल करके, Android पर Google की सुरक्षित ब्राउज़िंग सेवा का ज़्यादा से ज़्यादा फ़ायदा पाएं. इसके लिए, ज़्यादा से ज़्यादा संसाधनों का इस्तेमाल करें और नेटवर्क प्रोटोकॉल लागू न करें.

इस दस्तावेज़ में, किसी यूआरएल में मौजूद खतरों का पता लगाने के लिए, SafetyNet के सेफ़ ब्राउज़िंग लुकअप एपीआई का इस्तेमाल करने का तरीका बताया गया है.

सेवा की शर्तें

सुरक्षित ब्राउज़िंग एपीआई का इस्तेमाल करने का मतलब है कि आपने सेवा की शर्तों से सहमति दी है. सुरक्षित ब्राउज़िंग एपीआई को ऐक्सेस करने से पहले, कृपया इस पर लागू होने वाली सभी शर्तों और नीतियों को पढ़कर समझ लें.

Android एपीआई पासकोड का अनुरोध करना और उसे रजिस्टर करना

सुरक्षित ब्राउज़िंग एपीआई का इस्तेमाल करने से पहले, Android एपीआई पासकोड बनाएं और उसे रजिस्टर करें. सुरक्षित ब्राउज़िंग की सुविधा का इस्तेमाल शुरू करने के बारे में जानने के लिए, ज़्यादा जानकारी वाला पेज देखें.

SafetyNet API डिपेंडेंसी जोड़ना

सुरक्षित ब्राउज़िंग एपीआई का इस्तेमाल करने से पहले, अपने प्रोजेक्ट में SafetyNet API जोड़ें. अगर Android Studio का इस्तेमाल किया जा रहा है, तो इस डिपेंडेंसी को ऐप्लिकेशन-लेवल की Gradle फ़ाइल में जोड़ें. ज़्यादा जानकारी के लिए, SafetyNet की मदद से, सुरक्षा से जुड़े खतरों से बचाव लेख पढ़ें.

एपीआई को शुरू करना

सुरक्षित ब्राउज़िंग एपीआई का इस्तेमाल करने के लिए, आपको एपीआई को शुरू करना होगा. इसके लिए, initSafeBrowsing() को कॉल करें और इसके पूरा होने का इंतज़ार करें. यहां दिया गया कोड स्निपेट एक उदाहरण देता है:

Kotlin

Tasks.await(SafetyNet.getClient(this).initSafeBrowsing())

Java

Tasks.await(SafetyNet.getClient(this).initSafeBrowsing());

यूआरएल की जांच का अनुरोध करना

आपका ऐप्लिकेशन, यूआरएल की जांच करके यह पता लगा सकता है कि कोई यूआरएल, पहले से मौजूद किसी खतरे से जुड़ा है या नहीं. यह मुमकिन है कि कुछ तरह के खतरे आपके ऐप्लिकेशन के लिए काम के न हों. एपीआई से आपको यह चुनने की सुविधा मिलती है कि आपकी ज़रूरत के हिसाब से किस तरह के खतरे ज़रूरी हैं. आपके पास, खतरे के कई टाइप तय करने का विकल्प होता है.

यूआरएल की जांच का अनुरोध भेजना

एपीआई, इस्तेमाल की गई स्कीम के बारे में नहीं जानता. इसलिए, यूआरएल को स्कीम के साथ या बिना स्कीम के पास किया जा सकता है. उदाहरण के लिए, दोनों

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";

मान्य हों.

यहां दिए गए कोड में, यूआरएल की जांच का अनुरोध भेजने का तरीका बताया गया है:

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());
               }
           }
   });

यूआरएल की जांच का जवाब पढ़ें

दिखाए गए SafetyNetApi.SafeBrowsingResponse ऑब्जेक्ट का इस्तेमाल करके, उसके getDetectedThreats() तरीके को कॉल करें. इससे SafeBrowsingThreat ऑब्जेक्ट की सूची दिखेगी. अगर लिस्ट खाली है, तो इसका मतलब है कि एपीआई को कोई खतरा नहीं मिला. अगर सूची खाली नहीं है, तो सूची के हर एलिमेंट पर getThreatType() को कॉल करके पता लगाएं कि एपीआई ने कौनसे खतरों का पता लगाया है.

चेतावनी के लिए सुझाई गई भाषा देखने के लिए, सुरक्षित ब्राउज़िंग एपीआई डेवलपर गाइड देखें.

अपनी दिलचस्पी के हिसाब से खतरे के टाइप बताएं

SafeBrowsingThreat क्लास में मौजूद कॉन्स्टेंट में, फ़िलहाल खतरे के ये टाइप शामिल हैं:

खतरे का टाइप परिभाषा
TYPE_POTENTIALLY_HARMFUL_APPLICATION इस तरह की धमकी, उन पेजों के यूआरएल की पहचान करती है जिन्हें नुकसान पहुंचाने वाले ऐप्लिकेशन के तौर पर फ़्लैग किया गया है.
TYPE_SOCIAL_ENGINEERING इस तरह की धमकी, उन पेजों के यूआरएल की पहचान करती है जिन्हें सोशल इंजीनियरिंग से जुड़ी धमकियों के तौर पर फ़्लैग किया गया है.

एपीआई का इस्तेमाल करते समय, खतरे के टाइप के कॉन्स्टेंट को आर्ग्युमेंट के तौर पर जोड़ा जाता है. खतरे के टाइप के जितने चाहें उतने कॉन्स्टेंट जोड़े जा सकते हैं. हालांकि, सिर्फ़ उन कॉन्स्टेंट का इस्तेमाल किया जा सकता है जिन्हें 'अब इस्तेमाल नहीं किया जा सकता' के तौर पर मार्क नहीं किया गया है.

सुरक्षित ब्राउज़िंग का सेशन बंद करना

अगर आपके ऐप्लिकेशन को लंबे समय तक सुरक्षित ब्राउज़िंग एपीआई का इस्तेमाल करने की ज़रूरत नहीं है, तो अपने ऐप्लिकेशन में सभी ज़रूरी यूआरएल देखें. इसके बाद, shutdownSafeBrowsing() के इस तरीके का इस्तेमाल करके, सुरक्षित ब्राउज़िंग सेशन बंद करें:

Kotlin

SafetyNet.getClient(this).shutdownSafeBrowsing()

Java

SafetyNet.getClient(this).shutdownSafeBrowsing();

हमारा सुझाव है कि आप shutdownSafeBrowsing() को अपनी गतिविधि के onPause() तरीके में कॉल करें और अपनी गतिविधि के onResume() तरीके में initSafeBrowsing() को कॉल करें. हालांकि, lookupUri() को कॉल करने से पहले, पक्का करें कि initSafeBrowsing() का एक्सीक्यूशन पूरा हो गया हो. अपने सेशन को हमेशा अपडेट रखने से, अपने ऐप्लिकेशन में इंटरनल गड़बड़ियों की संभावना कम हो जाती है.

SafetyNet Safe Browsing API से इकट्ठा किया गया डेटा

SafetyNet Safe Browsing API, Android पर Safe Browsing सेवा के साथ बातचीत करते समय, यह डेटा अपने-आप इकट्ठा करता है:

डेटा ब्यौरा
ऐप्लिकेशन में की गई गतिविधि नुकसान पहुंचाने वाले यूआरएल का पता लगाने के लिए, स्थानीय हैश प्रीफ़िक्स मैच होने के बाद, यूआरएल का हैश प्रीफ़िक्स इकट्ठा करता है.

हमारा मकसद ज़्यादा से ज़्यादा पारदर्शी होने की कोशिश करना है. हालांकि, इस बात का फ़ैसला पूरी तरह से आपकी ज़िम्मेदारी है कि Google Play के डेटा की सुरक्षा वाले सेक्शन के फ़ॉर्म में दिए गए जवाब कैसे दिए जाएं. इस फ़ॉर्म में, आपके ऐप्लिकेशन में उपयोगकर्ता का डेटा इकट्ठा करने, उसे शेयर करने, और उसकी सुरक्षा के तरीकों के बारे में क्या जानकारी है.