Interfejs API Bezpieczne przeglądanie SafetyNet to biblioteka obsługiwana przez Usługi Google Play, która umożliwia określenie, czy adres URL został oznaczony przez Google jako znane zagrożenie.
Aplikacja może używać tego interfejsu API do określenia, czy dany adres URL został sklasyfikowany przez Google jako znane zagrożenie. Wewnętrznie SafetyNet wdraża klienta dla protokołu sieciowego Bezpiecznego przeglądania w wersji 4 opracowanego przez Google. Zarówno kod klienta, jak i protokół sieciowy v4 zostały zaprojektowane tak, aby chronić prywatność użytkowników i minimalizować zużycie baterii oraz przepustowości. Używaj tego interfejsu API, aby w pełni korzystać z usługi Bezpieczne przeglądanie Google na Androidzie w najbardziej zoptymalizowany pod kątem zasobów sposób, bez konieczności wdrażania protokołu sieciowego.
Z tego dokumentu dowiesz się, jak używać interfejsu SafetyNet Safe Browsing Lookup API do sprawdzania adresów URL pod kątem znanych zagrożeń.
Warunki usługi
Korzystając z interfejsu Safe Browsing API, Użytkownik akceptuje Warunki korzystania z usługi. Zanim uzyskasz dostęp do interfejsu Safe Browsing API, przeczytaj i zapoznaj się ze wszystkimi obowiązującymi warunkami i zasadami.
Prośba o klucz interfejsu API Androida i jego rejestracja
Zanim użyjesz interfejsu API Bezpiecznego przeglądania, utwórz i zarejestruj klucz interfejsu API na Androida. Szczegółowe instrukcje znajdziesz na stronie Pierwsze kroki z Bezpiecznym przeglądaniem.
Dodaj zależność SafetyNet API
Zanim zaczniesz korzystać z interfejsu Safe Browsing API, dodaj interfejs SafetyNet API do projektu. Jeśli używasz Android Studio, dodaj tę zależność do pliku Gradle na poziomie aplikacji. Więcej informacji znajdziesz w artykule o ochronie przed zagrożeniami bezpieczeństwa przy użyciu SafetyNet.
Inicjowanie interfejsu API
Aby korzystać z interfejsu Safe Browsing API, musisz zainicjować ten interfejs API, wywołując metodę initSafeBrowsing()
i zaczekując na jego zakończenie. Oto przykład:
Kotlin
Tasks.await(SafetyNet.getClient(this).initSafeBrowsing())
Java
Tasks.await(SafetyNet.getClient(this).initSafeBrowsing());
Poproś o sprawdzenie adresu URL
Aplikacja może sprawdzić adres URL, aby określić, czy stwarza ono znane zagrożenie. Niektóre typy zagrożeń mogą nie być istotne dla Twojej aplikacji. Interfejs API pozwala wybrać typy zagrożeń, które są dla Ciebie ważne. Możesz podać kilka znanych typów zagrożeń.
Wysyłanie prośby o sprawdzenie adresu URL
Interfejs API nie zależy od używanego schematu, więc możesz przekazać adres URL ze schematem lub bez niego. Na przykład:
Kotlin
var url = "https://www.google.com"
Java
String url = "https://www.google.com";
i
Kotlin
var url = "www.google.com"
Java
String url = "www.google.com";
są prawidłowe.
Ten kod pokazuje, jak wysłać żądanie sprawdzenia adresu 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()); } } });
Czytanie odpowiedzi na sprawdzenie adresu URL
Korzystając z zwróconego obiektu SafetyNetApi.SafeBrowsingResponse
, wywołaj jego metodę getDetectedThreats()
, która zwraca listę obiektów SafeBrowsingThreat
. Jeśli zwrócona lista jest pusta, oznacza to, że interfejs API nie wykrył żadnych znanych zagrożeń.
Jeśli lista nie jest pusta, wywołaj funkcję getThreatType()
dla każdego elementu na liście, aby określić, które znane zagrożenia wykrył interfejs API.
Sugerowany język ostrzeżeń znajdziesz w Przewodniku dla deweloperów interfejsu Safe Browsing API.
Określ interesujące Cię typy zagrożeń
Stałe w klasie SafeBrowsingThreat
zawierają obecnie obsługiwane typy zagrożeń:
Typ zagrożenia | Definicja |
---|---|
TYPE_POTENTIALLY_HARMFUL_APPLICATION |
Ten typ zagrożenia identyfikuje adresy URL stron oznaczonych jako zawierające potencjalnie szkodliwe aplikacje. |
TYPE_SOCIAL_ENGINEERING |
Ten typ zagrożenia identyfikuje adresy URL stron oznaczonych jako zawierające zagrożenia socjotechniki. |
Podczas korzystania z interfejsu API należy dodać stałe typu zagrożenia jako argumenty. Możesz dodać tyle stałych typów zagrożeń, ile wymaga Twoja aplikacja, ale możesz używać tylko tych stałych, które nie są oznaczone jako wycofane.
Zamykanie sesji Bezpiecznego przeglądania
Jeśli aplikacja nie musi używać interfejsu Bezpieczne przeglądanie przez dłuższy czas, sprawdź jej wszystkie niezbędne adresy URL, a następnie wyłącz sesję Bezpiecznego przeglądania, korzystając z metody shutdownSafeBrowsing()
:
Kotlin
SafetyNet.getClient(this).shutdownSafeBrowsing()
Java
SafetyNet.getClient(this).shutdownSafeBrowsing();
Zalecamy wywołanie funkcji shutdownSafeBrowsing()
w metodzie onPause()
aktywności oraz wywołanie funkcji initSafeBrowsing()
w metodzie onResume()
aktywności. Zanim wywołasz funkcję lookupUri()
, upewnij się, że funkcja initSafeBrowsing()
została już wykonana.
Dbając o to, aby sesja była zawsze aktualna, zmniejszasz prawdopodobieństwo wystąpienia błędów wewnętrznych w aplikacji.
Dane zbierane przez interfejs API Bezpiecznego przeglądania SafetyNet
Interfejs SafetyNet Safe Browsing API zbiera automatycznie te dane podczas komunikacji z usługą Bezpieczne przeglądanie na Androidzie:
Dane | Opis |
---|---|
Aktywność w aplikacji | Zbiera prefiks skrótu adresów URL po dopasowaniu lokalnego prefiksu skrótu do wykrywania złośliwych adresów URL. |
Dążymy do jak największej przejrzystości, ale to Ty ponosisz wyłączną odpowiedzialność za decyzje związane z formularzem Bezpieczeństwo danych w Google Play dotyczące zbierania, udostępniania i zabezpieczania danych użytkowników przez Twoją aplikację.