সেফটিনেট সেফ ব্রাউজিং এপিআই

SafetyNet Safe Browsing API, Google Play পরিষেবা দ্বারা চালিত একটি লাইব্রেরি, একটি URL কে Google দ্বারা পরিচিত হুমকি হিসাবে চিহ্নিত করা হয়েছে কিনা তা নির্ধারণের জন্য পরিষেবা প্রদান করে৷

আপনার অ্যাপ এই API ব্যবহার করে নির্ধারণ করতে পারে যে একটি নির্দিষ্ট URL Google দ্বারা পরিচিত হুমকি হিসাবে শ্রেণীবদ্ধ করা হয়েছে কিনা। অভ্যন্তরীণভাবে, SafetyNet Google দ্বারা তৈরি নিরাপদ ব্রাউজিং নেটওয়ার্ক প্রোটোকল v4 এর জন্য একটি ক্লায়েন্ট প্রয়োগ করে। ক্লায়েন্ট কোড এবং v4 নেটওয়ার্ক প্রোটোকল উভয়ই ব্যবহারকারীদের গোপনীয়তা রক্ষা করতে এবং ব্যাটারি ও ব্যান্ডউইথের ব্যবহারকে সর্বনিম্ন রাখার জন্য ডিজাইন করা হয়েছে। সবচেয়ে রিসোর্স-অপ্টিমাইজ করা উপায়ে এবং এর নেটওয়ার্ক প্রোটোকল প্রয়োগ না করে Android-এ Google-এর নিরাপদ ব্রাউজিং পরিষেবার সম্পূর্ণ সুবিধা নিতে এই API ব্যবহার করুন।

এই দস্তাবেজটি ব্যাখ্যা করে যে কীভাবে সেফটিনেট সেফ ব্রাউজিং লুকআপ API ব্যবহার করে পরিচিত হুমকির জন্য একটি URL চেক করতে হয়৷

পরিষেবার শর্তাবলী

নিরাপদ ব্রাউজিং API ব্যবহার করে, আপনি পরিষেবার শর্তাবলী দ্বারা আবদ্ধ হতে সম্মত হন। নিরাপদ ব্রাউজিং API অ্যাক্সেস করার আগে অনুগ্রহ করে সমস্ত প্রযোজ্য শর্তাবলী এবং নীতিগুলি পড়ুন এবং বুঝুন৷

একটি Android API কী অনুরোধ এবং নিবন্ধন করুন৷

নিরাপদ ব্রাউজিং API ব্যবহার করার আগে, একটি Android API কী তৈরি করুন এবং নিবন্ধন করুন৷ নির্দিষ্ট পদক্ষেপের জন্য, নিরাপদ ব্রাউজিং শুরু করার পৃষ্ঠাটি দেখুন।

SafetyNet API নির্ভরতা যোগ করুন

নিরাপদ ব্রাউজিং API ব্যবহার করার আগে, আপনার প্রকল্পে SafetyNet API যোগ করুন। আপনি যদি অ্যান্ড্রয়েড স্টুডিও ব্যবহার করেন তবে আপনার অ্যাপ-লেভেল গ্রেডল ফাইলে এই নির্ভরতা যোগ করুন। আরও তথ্যের জন্য, SafetyNet-এর মাধ্যমে নিরাপত্তা হুমকির বিরুদ্ধে সুরক্ষা দেখুন।

এপিআই আরম্ভ করুন

নিরাপদ ব্রাউজিং এপিআই ব্যবহার করতে, আপনাকে অবশ্যই initSafeBrowsing() কল করে API চালু করতে হবে এবং এটি সম্পূর্ণ হওয়ার জন্য অপেক্ষা করতে হবে। নিম্নলিখিত কোড স্নিপেট একটি উদাহরণ প্রদান করে:

কোটলিন

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

জাভা

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

একটি URL চেক অনুরোধ

আপনার অ্যাপ একটি ইউআরএল চেক ব্যবহার করে একটি ইউআরএল একটি পরিচিত হুমকি তৈরি করে কিনা তা নির্ধারণ করতে পারে। কিছু হুমকির ধরন আপনার নির্দিষ্ট অ্যাপে আগ্রহী নাও হতে পারে। API আপনাকে আপনার প্রয়োজনের জন্য কোন হুমকি প্রকারগুলি গুরুত্বপূর্ণ তা চয়ন করতে দেয়৷ আপনি একাধিক পরিচিত হুমকি প্রকার নির্দিষ্ট করতে পারেন।

URL চেক অনুরোধ পাঠান

API ব্যবহৃত স্কিমের জন্য অজ্ঞেয়বাদী, তাই আপনি একটি স্কিম সহ বা ছাড়াই URL পাস করতে পারেন৷ উদাহরণস্বরূপ, উভয়

কোটলিন

var url = "https://www.google.com"

জাভা

String url = "https://www.google.com";

এবং

কোটলিন

var url = "www.google.com"

জাভা

String url = "www.google.com";

বৈধ

নিম্নলিখিত কোডটি দেখায় কিভাবে একটি URL চেক অনুরোধ পাঠাতে হয়:

কোটলিন

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}")
           }
       }

জাভা

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 কোনো পরিচিত হুমকি সনাক্ত করেনি। যদি তালিকাটি খালি না থাকে, তাহলে API সনাক্ত করা পরিচিত হুমকিগুলি নির্ধারণ করতে তালিকার প্রতিটি উপাদানে getThreatType() কল করুন।

প্রস্তাবিত সতর্কতা ভাষা দেখতে, নিরাপদ ব্রাউজিং API বিকাশকারীর নির্দেশিকা দেখুন।

সুদের হুমকি প্রকার উল্লেখ করুন

SafeBrowsingThreat ক্লাসের ধ্রুবকগুলি বর্তমানে সমর্থিত হুমকি প্রকারগুলি ধারণ করে:

হুমকির ধরন সংজ্ঞা
TYPE_POTENTIALLY_HARMFUL_APPLICATION এই হুমকির ধরনটি সম্ভাব্য ক্ষতিকারক অ্যাপ্লিকেশন ধারণকারী পৃষ্ঠাগুলির URLগুলিকে চিহ্নিত করে৷
TYPE_SOCIAL_ENGINEERING এই হুমকির ধরনটি এমন পৃষ্ঠাগুলির URLগুলিকে চিহ্নিত করে যেগুলিকে সোশ্যাল ইঞ্জিনিয়ারিং হুমকি রয়েছে বলে পতাকাঙ্কিত করা হয়েছে৷

API ব্যবহার করার সময়, আপনি আর্গুমেন্ট হিসাবে হুমকি টাইপ ধ্রুবক যোগ করুন। আপনার অ্যাপের প্রয়োজন অনুযায়ী আপনি যতগুলি হুমকি টাইপ ধ্রুবক যোগ করতে পারেন, তবে আপনি শুধুমাত্র সেই ধ্রুবকগুলি ব্যবহার করতে পারেন যেগুলিকে অবহেলিত হিসাবে চিহ্নিত করা হয়নি৷

আপনার নিরাপদ ব্রাউজিং সেশন বন্ধ করুন

যদি আপনার অ্যাপের দীর্ঘ সময়ের জন্য সেফ ব্রাউজিং এপিআই ব্যবহার করার প্রয়োজন না হয়, তাহলে আপনার অ্যাপের মধ্যে প্রয়োজনীয় সব ইউআরএল চেক করুন এবং তারপর shutdownSafeBrowsing() পদ্ধতি ব্যবহার করে আপনার সেফ ব্রাউজিং সেশন বন্ধ করুন:

কোটলিন

SafetyNet.getClient(this).shutdownSafeBrowsing()

জাভা

SafetyNet.getClient(this).shutdownSafeBrowsing();

আমরা সুপারিশ করি যে আপনি আপনার কার্যকলাপের onPause() পদ্ধতিতে shutdownSafeBrowsing() এবং আপনার কার্যকলাপের onResume() পদ্ধতিতে initSafeBrowsing() কল করুন৷ যাইহোক, lookupUri() কল করার আগে initSafeBrowsing() কার্যকর করা শেষ করেছে তা নিশ্চিত করুন। আপনার সেশন সবসময় তাজা থাকে তা নিশ্চিত করে, আপনি আপনার অ্যাপে অভ্যন্তরীণ ত্রুটির সম্ভাবনা কমিয়ে দেন।

SafetyNet Safe Browsing API দ্বারা সংগৃহীত ডেটা

SafetyNet নিরাপদ ব্রাউজিং API যখন Android এ নিরাপদ ব্রাউজিং পরিষেবার সাথে যোগাযোগ করে তখন স্বয়ংক্রিয়ভাবে নিম্নলিখিত ডেটা সংগ্রহ করে:

ডেটা বর্ণনা
অ্যাপ কার্যকলাপ ক্ষতিকারক ইউআরএল শনাক্ত করার উদ্দেশ্যে স্থানীয় হ্যাশ প্রিফিক্স ম্যাচের পরে URL-এর হ্যাশ উপসর্গ সংগ্রহ করে।

যদিও আমরা যতটা সম্ভব স্বচ্ছ হওয়ার লক্ষ্য রাখি, আপনার অ্যাপের ব্যবহারকারীর ডেটা সংগ্রহ, ভাগ করে নেওয়া এবং নিরাপত্তা অনুশীলন সংক্রান্ত Google Play-এর ডেটা সুরক্ষা বিভাগ ফর্মে কীভাবে প্রতিক্রিয়া জানাবেন তা সিদ্ধান্ত নেওয়ার জন্য আপনি সম্পূর্ণভাবে দায়ী৷