SafetyNet Safe Browsing API, library yang didukung oleh layanan Google Play, menyediakan layanan untuk menentukan apakah URL telah ditandai sebagai ancaman yang diketahui oleh Google atau belum.
Aplikasi Anda dapat menggunakan API ini untuk menentukan apakah URL tertentu telah diklasifikasikan oleh Google sebagai ancaman yang diketahui atau tidak. Secara internal, SafetyNet menerapkan klien untuk Protokol Jejaring v4 Safe Browsing yang dikembangkan oleh Google. Baik kode klien maupun protokol jaringan v4 dirancang untuk melindungi privasi pengguna serta menjaga konsumsi baterai dan bandwidth seminimal mungkin. Gunakan API ini untuk memanfaatkan sepenuhnya layanan Safe Browsing Google di Android dengan cara yang paling hemat resource, tanpa menerapkan protokol jaringannya.
Dokumen ini menjelaskan cara menggunakan SafetyNet Safe Browsing Lookup API untuk memeriksa ancaman yang diketahui di URL.
Persyaratan layanan
Dengan menggunakan Safe Browsing API, Anda setuju untuk terikat dengan Persyaratan Layanan. Harap baca dan pahami semua persyaratan dan kebijakan yang berlaku sebelum mengakses Safe Browsing API.
Meminta dan mendaftarkan kunci Android API
Sebelum menggunakan Safe Browsing API, buat dan daftarkan kunci API Android. Untuk mengetahui langkah-langkah tertentu, lihat halaman tentang mulai menggunakan Safe Browsing.
Menambahkan dependensi SafetyNet API
Sebelum menggunakan Safe Browsing API, tambahkan SafetyNet API ke project Anda. Jika Anda menggunakan Android Studio, tambahkan dependensi ini ke file Gradle level aplikasi. Untuk mengetahui informasi selengkapnya, baca Melindungi dari ancaman keamanan dengan SafetyNet.
Menginisialisasi API
Untuk menggunakan Safe Browsing API, Anda harus menginisialisasi API dengan memanggil
initSafeBrowsing()
dan menunggu hingga selesai. Cuplikan kode berikut menunjukkan sebuah contoh:
Kotlin
Tasks.await(SafetyNet.getClient(this).initSafeBrowsing())
Java
Tasks.await(SafetyNet.getClient(this).initSafeBrowsing());
Meminta pemeriksaan URL
Aplikasi Anda dapat menggunakan pemeriksaan URL untuk menentukan apakah URL menimbulkan ancaman yang diketahui atau tidak. Beberapa jenis ancaman mungkin tidak relevan dengan aplikasi Anda. API ini memungkinkan Anda memilih jenis ancaman yang penting untuk kebutuhan Anda. Anda dapat menentukan beberapa jenis ancaman yang diketahui.
Mengirim permintaan pemeriksaan URL
API ini tidak bergantung pada skema yang digunakan, jadi Anda dapat meneruskan URL dengan atau tanpa skema. Misalnya, baik
Kotlin
var url = "https://www.google.com"
Java
String url = "https://www.google.com";
maupun
Kotlin
var url = "www.google.com"
Java
String url = "www.google.com";
valid.
Kode berikut menunjukkan cara mengirim permintaan pemeriksaan 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()); } } });
Membaca respons pemeriksaan URL
Menggunakan objek
SafetyNetApi.SafeBrowsingResponse
yang ditampilkan, panggil metode
getDetectedThreats()
,
yang akan menampilkan daftar
objek
SafeBrowsingThreat
. Jika daftar yang ditampilkan kosong, berarti API tidak mendeteksi ancaman apa pun yang diketahui.
Jika daftar tidak kosong, panggil
getThreatType()
pada setiap elemen dalam daftar untuk menentukan ancaman yang diketahui dan terdeteksi oleh API.
Untuk melihat bahasa peringatan yang disarankan, lihat Panduan Developer Safe Browsing API.
Menentukan jenis ancaman yang relevan
Konstanta dalam class SafeBrowsingThreat
berisi
jenis ancaman yang saat ini didukung:
Jenis ancaman | Definisi |
---|---|
TYPE_POTENTIALLY_HARMFUL_APPLICATION |
Jenis ancaman ini mengidentifikasi URL halaman yang ditandai sebagai berisi aplikasi yang berpotensi berbahaya. |
TYPE_SOCIAL_ENGINEERING |
Jenis ancaman ini mengidentifikasi URL halaman yang ditandai sebagai berisi ancaman manipulasi psikologis. |
Saat menggunakan API, Anda menambahkan konstanta jenis ancaman sebagai argumen. Anda dapat menambahkan sebanyak mungkin konstanta jenis ancaman sesuai kebutuhan aplikasi, tetapi Anda hanya dapat menggunakan konstanta yang tidak ditandai sebagai tidak digunakan lagi.
Mematikan sesi Safe Browsing
Jika aplikasi Anda tidak perlu menggunakan Safe Browsing API dalam waktu lama,
periksa semua URL yang diperlukan dalam aplikasi Anda, lalu matikan
sesi Safe Browsing menggunakan
metode
shutdownSafeBrowsing()
:
Kotlin
SafetyNet.getClient(this).shutdownSafeBrowsing()
Java
SafetyNet.getClient(this).shutdownSafeBrowsing();
Sebaiknya panggil shutdownSafeBrowsing()
dalam
metode onPause()
aktivitas Anda, dan panggil
initSafeBrowsing()
dalam metode onResume()
aktivitas Anda. Namun,
pastikan initSafeBrowsing()
telah selesai dieksekusi sebelum
memanggil
lookupUri()
.
Dengan memastikan sesi Anda selalu
baru, Anda mengurangi kemungkinan error internal dalam aplikasi.
Data yang dikumpulkan oleh SafetyNet Safe Browsing API
SafetyNet Safe Browsing API mengumpulkan data berikut secara otomatis saat berkomunikasi dengan layanan Safe Browsing di Android:
Data | Deskripsi |
---|---|
Aktivitas Aplikasi | Mengumpulkan awalan hash URL setelah awalan hash lokal cocok untuk tujuan mendeteksi URL berbahaya. |
Meskipun kami berupaya bersikap setransparan mungkin, Anda sepenuhnya bertanggung jawab untuk memutuskan cara merespons formulir bagian keamanan data Google Play terkait praktik pengumpulan, berbagi, dan keamanan data pengguna aplikasi.