Google Play Hizmetleri tarafından desteklenen bir kitaplık olan SafetyNet Safe Browsing API, bir URL'nin Google tarafından bilinen bir tehdit olarak işaretlenip işaretlenmediğini belirleme hizmetleri sağlar.
Uygulamanız, belirli bir URL'nin Google tarafından bilinen bir tehdit olarak sınıflandırılıp sınıflandırılmadığını belirlemek için bu API'yi kullanabilir. SafetyNet, Google tarafından geliştirilen Güvenli Tarama Ağ Protokolü v4 için dahili olarak bir istemci uygular. Hem istemci kodu hem de v4 ağ protokolü, kullanıcıların gizliliğini korumak ve pil ile bant genişliği tüketimini en aza indirmek için tasarlanmıştır. Google'ın Android'deki Güvenli Tarama hizmetinden en fazla kaynak açısından optimize edilmiş şekilde ve ağ protokolünü uygulamadan yararlanmak için bu API'yi kullanın.
Bu dokümanda, bir URL'yi bilinen tehditlere karşı kontrol etmek için SafetyNet Safe Browsing Lookup API'nin nasıl kullanılacağı açıklanmaktadır.
Hizmet şartları
Safe Browsing API'yi kullanarak Hizmet Şartları'na tabi olmayı kabul etmiş olursunuz. Güvenli Tarama API'ye erişmeden önce lütfen geçerli tüm hüküm ve politikaları okuyup anlayın.
Android API anahtarı isteme ve kaydetme
Güvenli Tarama API'sini kullanmadan önce bir Android API anahtarı oluşturup kaydedin. Belirli adımlar için Güvenli Tarama'yı kullanmaya başlama başlıklı sayfaya bakın.
SafetyNet API bağımlılığını ekleme
Safe Browsing API'yi kullanmadan önce SafetyNet API'yi projenize ekleyin. Android Studio kullanıyorsanız bu bağımlılığı uygulama düzeyindeki Gradle dosyanıza ekleyin. Daha fazla bilgi için SafetyNet ile güvenlik tehditlerine karşı koruma konusuna bakın.
API'yi başlatma
Safe Browsing API'yi kullanmak için initSafeBrowsing()
çağrısını yaparak API'yi başlatmanız ve tamamlanmasını beklemeniz gerekir. Aşağıdaki kod snippet'inde bir örnek verilmiştir:
Kotlin
Tasks.await(SafetyNet.getClient(this).initSafeBrowsing())
Java
Tasks.await(SafetyNet.getClient(this).initSafeBrowsing());
URL kontrolü isteyin
Uygulamanız, bir URL'nin bilinen bir tehdit oluşturup oluşturmadığını belirlemek için URL kontrolü yapabilir. Bazı tehdit türleri, uygulamanız için önemli olmayabilir. API, ihtiyaçlarınız için hangi tehdit türlerinin önemli olduğunu seçmenize olanak tanır. Birden fazla bilinen tehdit türünü belirtebilirsiniz.
URL kontrol isteğini gönderme
API, kullanılan şemaya bağlı değildir. Bu nedenle, URL'yi şema ile veya şema olmadan iletebilirsiniz. Örneğin,
Kotlin
var url = "https://www.google.com"
Java
String url = "https://www.google.com";
ve
Kotlin
var url = "www.google.com"
Java
String url = "www.google.com";
geçerlidir.
Aşağıdaki kod, bir URL kontrolü isteğinin nasıl gönderileceğini gösterir:
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 kontrol yanıtını okuma
Döndürülen SafetyNetApi.SafeBrowsingResponse
nesnesini kullanarak, SafeBrowsingThreat
nesnelerinin bir listesini döndüren getDetectedThreats()
yöntemini çağırın. Döndürülen liste boşsa API bilinen bir tehdit algılamamıştır.
Liste boş değilse API'nin algıladığı bilinen tehditleri belirlemek için listedeki her öğe için getThreatType()
çağrısı yapın.
Önerilen uyarı dilini görmek için Safe Browsing API Geliştirici Kılavuzu'na bakın.
İlgilendiğiniz tehdit türlerini belirtin
SafeBrowsingThreat
sınıfındaki sabitler şu anda desteklenen tehdit türlerini içerir:
Tehdit türü | Tanım |
---|---|
TYPE_POTENTIALLY_HARMFUL_APPLICATION |
Bu tehdit türü, zararlı olabilecek uygulamalar içerdiği işaretlenen sayfaların URL'lerini tanımlar. |
TYPE_SOCIAL_ENGINEERING |
Bu tehdit türü, sosyal mühendislik tehditleri içerdiği işaretlenen sayfaların URL'lerini tanımlar. |
API'yi kullanırken tehdit türü sabitlerini bağımsız değişken olarak eklersiniz. Uygulamanız gerektirdiği kadar tehdit türü sabit değeri ekleyebilirsiniz ancak yalnızca desteği sonlandırılmış olarak işaretlenmemiş sabit değerleri kullanabilirsiniz.
Güvenli Tarama oturumunuzu kapatma
Uygulamanızın uzun süre boyunca Güvenli Tarama API'sini kullanması gerekmiyorsa uygulamanızdaki gerekli tüm URL'leri kontrol edin ve ardından shutdownSafeBrowsing()
yöntemini kullanarak Güvenli Tarama oturumunuzu kapatın:
Kotlin
SafetyNet.getClient(this).shutdownSafeBrowsing()
Java
SafetyNet.getClient(this).shutdownSafeBrowsing();
Etkinliğinizin onPause()
yönteminde shutdownSafeBrowsing()
'ü, etkinliğinizin onResume()
yönteminde ise initSafeBrowsing()
'i çağırmanızı öneririz. Ancak lookupUri()
işlevini çağırmadan önce initSafeBrowsing()
işlevinin yürütülmesinin tamamlandığından emin olun.
Oturumunuzun her zaman yeni olduğundan emin olarak uygulamanızdaki dahili hata olasılığını azaltırsınız.
SafetyNet Güvenli Tarama API'si tarafından toplanan veriler
SafetyNet Güvenli Tarama API'si, Android'deki Güvenli Tarama hizmetiyle iletişim kurarken aşağıdaki verileri otomatik olarak toplar:
Veri | Açıklama |
---|---|
Uygulama Etkinliği | Kötü amaçlı URL'leri tespit etmek için, yerel karma ön eki eşleşmesinden sonra URL'lerin karma ön ekini toplar. |
Olabildiğince şeffaf olmayı hedefliyoruz. Ancak uygulamanızın kullanıcı verilerini toplama, paylaşma ve güvenlikle ilgili yaklaşımı hakkında Google Play'in Veri Güvenliği bölümü formuna nasıl yanıt vereceğinize karar vermek tamamen sizin sorumluluğunuzdadır.