সেফটিনেট ভেরিফাই অ্যাপস এপিআই

SafetyNet Verify Apps API, Google Play পরিষেবা দ্বারা চালিত একটি লাইব্রেরি, আপনার অ্যাপটিকে একটি ডিভাইসে ভেরিফাই অ্যাপস বৈশিষ্ট্যের সাথে প্রোগ্রাম্যাটিকভাবে ইন্টারঅ্যাক্ট করতে দেয়, ডিভাইসটিকে সম্ভাব্য ক্ষতিকারক অ্যাপ থেকে রক্ষা করে।

যদি আপনার অ্যাপটি আর্থিক তথ্যের মতো সংবেদনশীল ব্যবহারকারীর ডেটা পরিচালনা করে, তাহলে এটি নিশ্চিত করা গুরুত্বপূর্ণ যে ব্যবহারকারীর ডিভাইসটি দূষিত অ্যাপের বিরুদ্ধে সুরক্ষিত এবং এতে এমন কোনও অ্যাপ নেই যা আপনার অ্যাপের ছদ্মবেশ ধারণ করতে পারে বা অন্যান্য দূষিত ক্রিয়া সম্পাদন করতে পারে। যদি ডিভাইসের নিরাপত্তা ন্যূনতম নিরাপত্তা ভঙ্গি পূরণ না করে, তাহলে ব্যবহারকারীর বিপদ কমাতে আপনি আপনার নিজের অ্যাপের মধ্যে কার্যকারিতা অক্ষম করতে পারেন।

অ্যান্ড্রয়েড ইকোসিস্টেমকে যতটা সম্ভব নিরাপদ করতে তার অব্যাহত প্রতিশ্রুতির অংশ হিসেবে, Google অ্যান্ড্রয়েড অ্যাপের আচরণ পর্যবেক্ষণ ও প্রোফাইল করে। ভেরিফাই অ্যাপস ফিচারটি যদি একটি সম্ভাব্য বিপজ্জনক অ্যাপ শনাক্ত করে, তবে অ্যাপটি ইনস্টল করা সমস্ত ব্যবহারকারীকে অবিলম্বে অ্যাপটি আনইনস্টল করার জন্য অবহিত করা হয় এবং উৎসাহিত করা হয়। এই প্রক্রিয়া এই ব্যবহারকারীদের নিরাপত্তা এবং গোপনীয়তা রক্ষা করে।

SafetyNet Verify Apps API আপনাকে আপনার অ্যাপের ডেটা সুরক্ষিত রাখতে এই বৈশিষ্ট্যটি ব্যবহার করতে দেয়৷ এই API ব্যবহার করে, আপনি নির্ধারণ করতে পারেন ব্যবহারকারীর ডিভাইস ভেরিফাই অ্যাপ্লিকেশান বৈশিষ্ট্য দ্বারা সুরক্ষিত কিনা, যে ব্যবহারকারীরা ইতিমধ্যে বৈশিষ্ট্যটি ব্যবহার করছেন না তাদের সুরক্ষায় অপ্ট-ইন করতে উৎসাহিত করতে পারেন এবং ডিভাইসে ইনস্টল করা সম্ভাব্য ক্ষতিকারক অ্যাপগুলি সনাক্ত করতে পারেন৷ .

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

SafetyNet APIs অ্যাক্সেস বা ব্যবহার করে, আপনি Google API-এর পরিষেবার শর্তাবলী এবং নিম্নলিখিত যাচাই Apps API পরিষেবার শর্তাবলীতে সম্মত হন৷ API গুলি অ্যাক্সেস করার আগে অনুগ্রহ করে সমস্ত প্রযোজ্য শর্তাবলী এবং নীতিগুলি পড়ুন এবং বুঝুন৷

Apps API পরিষেবার শর্তাবলী যাচাই করুন

সম্ভাব্য ক্ষতিকারক অ্যাপগুলি সনাক্ত করে এমন অ্যাপগুলির বিশ্লেষণগুলি মিথ্যা ইতিবাচক এবং মিথ্যা নেতিবাচক উভয়ই পেতে পারে। এই API স্যুট থেকে প্রত্যাবর্তিত ফলাফল (বা এর অভাব) আমাদের বোধগম্যতার জন্য উপস্থাপন করা হয়েছে। আপনি স্বীকার করেন এবং বোঝেন যে এই SafetyNet API স্যুট দ্বারা প্রত্যাবর্তিত ফলাফলগুলি সর্বদা সঠিক হওয়ার গ্যারান্টি দেওয়া হয় না।

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

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

অ্যাপ যাচাইকরণ সক্ষম করুন

SafetyNet ভেরিফাই অ্যাপস এপিআই ভেরিফাই অ্যাপস বৈশিষ্ট্য সক্রিয় করার জন্য দুটি পদ্ধতি প্রদান করে। আপনি isVerifyAppsEnabled() ব্যবহার করে অ্যাপ যাচাইকরণ সক্ষম করা হয়েছে কিনা তা নির্ধারণ করতে পারেন এবং আপনি enableVerifyApps() ব্যবহার করে অ্যাপ যাচাইকরণ সক্ষম করার অনুরোধ করতে পারেন।

এই দুটি পদ্ধতির মধ্যে পার্থক্য হল যে যখন isVerifyAppsEnabled() ভেরিফাই অ্যাপস বৈশিষ্ট্যের বর্তমান অবস্থা রিপোর্ট করে, তখন enableVerifyApps() স্পষ্টভাবে ব্যবহারকারীকে বৈশিষ্ট্যটি ব্যবহার করার জন্য সম্মতি চায়। আপনি যদি নিরাপত্তা-চালিত সিদ্ধান্ত নেওয়ার জন্য আপনার অ্যাপটিকে শুধুমাত্র বৈশিষ্ট্যের স্থিতি সম্পর্কে সচেতন করতে চান, তাহলে আপনার অ্যাপটিকে isVerifyAppsEnabled() কল করা উচিত। যাইহোক, যদি আপনি নিশ্চিত হতে চান যে আপনার অ্যাপ সম্ভাব্য ক্ষতিকারক ইনস্টল করা অ্যাপগুলিকে তালিকাভুক্ত করতে পারে, তাহলে আপনার পরিবর্তে enableVerifyApps() কল করা উচিত।

অ্যাপ যাচাইকরণ সক্ষম কিনা তা নির্ধারণ করুন

অ্যাসিঙ্ক্রোনাস isVerifyAppsEnabled() পদ্ধতি আপনার অ্যাপটিকে নির্ধারণ করতে দেয় যে ব্যবহারকারী যাচাই অ্যাপস বৈশিষ্ট্যে নথিভুক্ত কিনা। এই পদ্ধতিটি একটি VerifyAppsUserResponse অবজেক্ট ফেরত দেয়, যেটিতে ব্যবহারকারীর দ্বারা যাচাই করা অ্যাপস বৈশিষ্ট্যের সাথে সম্পর্কিত সমস্ত পদক্ষেপের তথ্য রয়েছে, এটি সক্ষম করা সহ।

নিম্নলিখিত কোড স্নিপেট দেখায় কিভাবে এই পদ্ধতির সাথে যুক্ত কলব্যাক তৈরি করতে হয়:

কোটলিন

SafetyNet.getClient(this)
        .isVerifyAppsEnabled
        .addOnCompleteListener { task ->
            if (task.isSuccessful) {
                if (task.result.isVerifyAppsEnabled) {
                    Log.d("MY_APP_TAG", "The Verify Apps feature is enabled.")
                } else {
                    Log.d("MY_APP_TAG", "The Verify Apps feature is disabled.")
                }
            } else {
                Log.e("MY_APP_TAG", "A general error occurred.")
            }
        }

জাভা

SafetyNet.getClient(this)
    .isVerifyAppsEnabled()
    .addOnCompleteListener(new OnCompleteListener<VerifyAppsUserResponse>() {
        @Override
        public void onComplete(Task<VerifyAppsUserResponse> task) {
            if (task.isSuccessful()) {
                VerifyAppsUserResponse result = task.getResult();
                if (result.isVerifyAppsEnabled()) {
                    Log.d("MY_APP_TAG", "The Verify Apps feature is enabled.");
                } else {
                    Log.d("MY_APP_TAG", "The Verify Apps feature is disabled.");
                }
            } else {
                Log.e("MY_APP_TAG", "A general error occurred.");
            }
        }
    });

অ্যাপ যাচাইকরণ সক্ষম করার অনুরোধ করুন

অ্যাসিঙ্ক্রোনাস enableVerifyApps() পদ্ধতিটি আপনার অ্যাপটিকে একটি ডায়ালগ আহ্বান করতে দেয় যাতে ব্যবহারকারী অ্যাপগুলি যাচাইকরণ বৈশিষ্ট্যটি সক্ষম করে। এই পদ্ধতিটি একটি VerifyAppsUserResponse অবজেক্ট ফেরত দেয়, যাতে ব্যবহারকারী যাচাই অ্যাপস বৈশিষ্ট্যের সাথে সম্পর্কিত সমস্ত ক্রিয়া সম্পর্কে তথ্য ধারণ করে, তারা এটি সক্ষম করার জন্য সম্মতি দিয়েছে কিনা সহ।

নিম্নলিখিত কোড স্নিপেট দেখায় কিভাবে এই পদ্ধতির সাথে যুক্ত কলব্যাক তৈরি করতে হয়:

কোটলিন

SafetyNet.getClient(this)
        .enableVerifyApps()
        .addOnCompleteListener { task ->
            if (task.isSuccessful) {
                if (task.result.isVerifyAppsEnabled) {
                    Log.d("MY_APP_TAG", "The user gave consent to enable the Verify Apps feature.")
                } else {
                    Log.d(
                            "MY_APP_TAG",
                            "The user didn't give consent to enable the Verify Apps feature."
                    )
                }
            } else {
                Log.e("MY_APP_TAG", "A general error occurred.")
            }
        }

জাভা

SafetyNet.getClient(this)
    .enableVerifyApps()
    .addOnCompleteListener(new OnCompleteListener<VerifyAppsUserResponse>() {
        @Override
        public void onComplete(Task<VerifyAppsUserResponse> task) {
            if (task.isSuccessful()) {
                VerifyAppsUserResponse result = task.getResult();
                if (result.isVerifyAppsEnabled()) {
                    Log.d("MY_APP_TAG", "The user gave consent " +
                          "to enable the Verify Apps feature.");
                } else {
                    Log.d("MY_APP_TAG", "The user didn't give consent " +
                          "to enable the Verify Apps feature.");
                }
            } else {
                Log.e("MY_APP_TAG", "A general error occurred.");
            }
        }
    });

এই পদ্ধতি ব্যবহার করার সময় আপনার অ্যাপ এক বা একাধিক অস্বাভাবিক অবস্থার সম্মুখীন হতে পারে:

  • ভেরিফাই অ্যাপ্লিকেশান বৈশিষ্ট্যটি ইতিমধ্যে সক্ষম থাকলে, ডায়ালগটি উপস্থিত হয় না এবং API এমন আচরণ করে যেন ব্যবহারকারী এই বৈশিষ্ট্যটি সক্ষম করতে সম্মতি দিয়েছেন।
  • যদি ব্যবহারকারী ডায়ালগ থেকে দূরে যান, ডায়ালগটি ধ্বংস হয়ে যায় এবং API অনুমান করে যে ব্যবহারকারী এই বৈশিষ্ট্যটি সক্ষম করার জন্য সম্মতি দেননি৷
  • যদি আপনার অ্যাপ এবং অন্য অ্যাপ একই সাথে এই পদ্ধতিটিকে কল করে, শুধুমাত্র একটি ডায়ালগ প্রদর্শিত হবে এবং সমস্ত অ্যাপ পদ্ধতি থেকে অভিন্ন রিটার্ন মান গ্রহণ করবে।

সম্ভাব্য ক্ষতিকারক ইনস্টল করা অ্যাপের তালিকা করুন

অ্যাসিঙ্ক্রোনাস listHarmfulApps() পদ্ধতি আপনাকে ব্যবহারকারী তাদের ডিভাইসে ইনস্টল করা সম্ভাব্য ক্ষতিকারক অ্যাপগুলির একটি তালিকা পেতে দেয়৷ এই তালিকায় চিহ্নিত সম্ভাব্য ক্ষতিকারক অ্যাপগুলির জন্য বিভাগগুলি অন্তর্ভুক্ত রয়েছে যাতে আপনার অ্যাপ উপযুক্ত ব্যবস্থা নিতে পারে।

নিম্নলিখিত কোড স্নিপেট দেখায় কিভাবে এই পদ্ধতির সাথে যুক্ত কলব্যাক তৈরি করতে হয়:

কোটলিন

SafetyNet.getClient(this)
        .listHarmfulApps()
        .addOnCompleteListener { task ->
            Log.d(TAG, "Received listHarmfulApps() result")

            if (task.isSuccessful) {
                val result = task.result
                val scanTimeMs = result.lastScanTimeMs

                val appList = result.harmfulAppsList
                if (appList?.isNotEmpty() == true) {
                    Log.e("MY_APP_TAG", "Potentially harmful apps are installed!")

                    for (harmfulApp in appList) {
                        Log.e("MY_APP_TAG", "Information about a harmful app:")
                        Log.e("MY_APP_TAG", "  APK: ${harmfulApp.apkPackageName}")
                        Log.e("MY_APP_TAG", "  SHA-256: ${harmfulApp.apkSha256}")

                        // Categories are defined in VerifyAppsConstants.
                        Log.e("MY_APP_TAG", "  Category: ${harmfulApp.apkCategory}")
                    }
                } else {
                    Log.d("MY_APP_TAG", "There are no known potentially harmful apps installed.")
                }
            } else {
                Log.d(
                        "MY_APP_TAG",
                        "An error occurred. Call isVerifyAppsEnabled() to ensure that the user "
                                + "has consented."
                )
            }
        }

জাভা

SafetyNet.getClient(this)
    .listHarmfulApps()
    .addOnCompleteListener(new OnCompleteListener<HarmfulAppsResponse>() {
        @Override
        public void onComplete(Task<HarmfulAppsResponse> task) {
            Log.d(TAG, "Received listHarmfulApps() result");

            if (task.isSuccessful()) {
                HarmfulAppsResponse result = task.getResult();
                long scanTimeMs = result.getLastScanTimeMs();

                List<HarmfulAppsData> appList = result.getHarmfulAppsList();
                if (appList.isEmpty()) {
                    Log.d("MY_APP_TAG", "There are no known " +
                          "potentially harmful apps installed.");
                } else {
                    Log.e("MY_APP_TAG",
                          "Potentially harmful apps are installed!");

                    for (HarmfulAppsData harmfulApp : appList) {
                        Log.e("MY_APP_TAG", "Information about a harmful app:");
                        Log.e("MY_APP_TAG",
                              "  APK: " + harmfulApp.apkPackageName);
                        Log.e("MY_APP_TAG",
                              "  SHA-256: " + harmfulApp.apkSha256);

                        // Categories are defined in VerifyAppsConstants.
                        Log.e("MY_APP_TAG",
                              "  Category: " + harmfulApp.apkCategory);
                    }
                }
            } else {
                Log.d("MY_APP_TAG", "An error occurred. " +
                      "Call isVerifyAppsEnabled() to ensure " +
                      "that the user has consented.");
            }
        }
    });