Google udostępnia zestaw interfejsów API i usług, które pomagają wykrywać, czy aplikacja działa w bezpiecznym i zaufanym środowisku. Najważniejszym elementem jest interfejs Play Integrity API, który pomaga sprawdzać, czy interakcje są autentyczne, wykrywając potencjalnie niebezpieczne i nielegalne interakcje. Oprócz informacji o integralności aplikacji i urządzenia interfejs Play Integrity API udostępnia teraz informacje o ryzyku związanym z dostępem i ułatwieniami dostępu, Google Play Protect i ostatniej aktywności na urządzeniu. Aby jeszcze bardziej wzmocnić strategię przeciwdziałania oszustwom, platforma Android udostępnia interfejsy API w przypadku konkretnych scenariuszy, które mogą być istotne dla Twojej aplikacji.
Play Integrity API
Play Integrity API umożliwia poznanie stanu bezpieczeństwa urządzenia, na którym działa aplikacja. Dzięki temu masz pewność, że do informacji poufnych ma dostęp właściwy użytkownik.
Pomaga on sprawdzać, czy interakcje i żądania serwera pochodzą z autentycznego pliku binarnego aplikacji w zaufanym środowisku:
- Autentyczność pliku binarnego: pozwala na ustalenie, czy plik binarny jest niezmodyfikowany i czy Google Play go rozpoznaje.
- Autentyczność instalacji z Google Play: umożliwia ustalenie, czy bieżące konto użytkownika jest objęte licencją. Świadczy to o tym, że użytkownik zainstalował lub zapłacił za Twoją aplikację lub grę w Google Play.
- Oryginalność urządzenia z Androidem: pozwala na ustalenie, czy aplikacja działa na oryginalnym urządzeniu z Androidem z Usługami Google Play.
- Brak znanego złośliwego oprogramowania: pozwala sprawdzać, czy usługa Google Play Protect jest włączona i czy wykryła zainstalowane na urządzeniu stwarzające ryzyko lub niebezpieczne aplikacje.
- Niskie ryzyko dostępu innych aplikacji: pozwala określić, czy uruchomione są inne aplikacje, które mogą przechwytywać ekran lub kontrolować urządzenie i dane wejściowe w Twojej aplikacji.
Jak to pomaga ograniczyć oszustwa
Gdy użytkownik wykona w Twojej aplikacji ważne działanie, możesz wywołać interfejs Play Integrity API. Jeśli tak się nie stanie, serwer backendu aplikacji może podjąć odpowiednie działania, które mają na celu ochronę przed atakami i oszustwami. Możesz na przykład wymagać dodatkowej weryfikacji użytkownika lub odmawiać dostępu do funkcji wymagających większej ochrony.

Ryzyko dotyczące dostępu do aplikacji
Sygnał Ryzyko dotyczące dostępu do aplikacji został wprowadzony, aby pomóc Ci ocenić, czy inne aplikacje na urządzeniu mogą wyświetlać i przechwytywać ekran, gdy Twoja aplikacja jest uruchomiona, lub uzyskiwać do niej dostęp za pomocą uprawnień ułatwień dostępu. Zweryfikowane aplikacje ułatwień dostępu są automatycznie wykluczane z tych ocen. Funkcja ryzyka związanego z dostępem aplikacji pomaga deweloperom chronić aplikacje przy jednoczesnym zachowaniu prywatności użytkowników, ponieważ aplikacja wysyłająca żądanie nie uzyskuje tożsamości zainstalowanych aplikacji, a wynik nie jest powiązany z identyfikatorami użytkownika ani urządzenia.
Dzięki tej współpracy możemy uzyskiwać sygnały potrzebne do zdobywania bardziej szczegółowych informacji, które pozwalają nam skuteczniej chronić naszych klientów.
– Nubank, partner w programie wcześniejszego dostępu
Ryzyko dotyczące dostępu do aplikacji ma różne poziomy ryzyka:
- Odpowiedź „przechwytywanie” oznacza, że uruchomione są inne aplikacje, które mogą rejestrować to, co widać na ekranie.
- Odpowiedź „sterowanie” oznacza, że uruchomione są inne aplikacje, które mogą sterować urządzeniem, a tym samym przechwytywać ekran i kontrolować dane wejściowe w Twojej aplikacji.
Wymuszanie ryzyka dotyczącego dostępu do aplikacji
Identyfikuj w aplikacji lub grze działania o wysokiej wartości lub wrażliwe, które chcesz chronić za pomocą interfejsu Play Integrity API, zamiast całkowicie odmawiać dostępu. W miarę możliwości sprawdzaj ryzykowny ruch, zanim zezwolisz na działania o wysokiej wartości. Na przykład, gdy ryzyko dotyczące dostępu do aplikacji wskazuje, że uruchomiona jest aplikacja, która może przechwytywać ekran, poproś użytkownika o wyłączenie lub odinstalowanie aplikacji, które mogą przechwytywać ekran, zanim zezwolisz mu na przejście do funkcji, które chcesz chronić.
W tabeli poniżej znajdziesz przykładowe wyniki:
| Przykładowa odpowiedź z oceną ryzyka dotyczącego dostępu do aplikacji | Interpretacja |
|---|---|
appsDetected:["KNOWN_INSTALLED"]
|
Zainstalowane są tylko aplikacje rozpoznawane przez Google Play lub wstępnie załadowane na partycji systemowej przez producenta urządzenia. Nie ma żadnych aplikacji, które mogłyby powodować przechwytywanie, sterowanie lub wyświetlanie nakładek. |
appsDetected:["KNOWN_INSTALLED","UNKNOWN_INSTALLED","UNKNOWN_CAPTURING"]
|
Aplikacje są instalowane przez Google Play lub wstępnie wczytywane na partycję systemową przez producenta urządzenia. Uruchomione są inne aplikacje z włączonymi uprawnieniami, które mogą wyświetlać ekran lub przechwytywać inne dane wejściowe i wyjściowe. |
appsDetected:["KNOWN_INSTALLED","KNOWN_CAPTURING","UNKNOWN_INSTALLED","UNKNOWN_CONTROLLING"]
|
Istnieją aplikacje w Google Play lub systemowe, które mają włączone uprawnienia, które mogą być używane do wyświetlania ekranu lub przechwytywania innych danych wejściowych i wyjściowych. Uruchomione są też inne aplikacje z włączonymi uprawnieniami, które mogą być używane do sterowania urządzeniem i bezpośredniego kontrolowania danych wejściowych w Twojej aplikacji. |
appAccessRiskVerdict: {}
|
Ryzyko dotyczące dostępu do aplikacji nie zostało ocenione, ponieważ pominięto niezbędny wymóg. Na przykład urządzenie nie było wystarczająco godne zaufania. |
Sygnał Play Protect
Sygnał Play Protect informuje aplikację, czy usługa Play Protect jest włączona i czy wykryła na urządzeniu znane szkodliwe aplikacje.
environmentDetails:{
playProtectVerdict: "NO_ISSUES"
}
Jeśli złośliwe oprogramowanie jest szczególnie niebezpieczne dla Twojej aplikacji lub danych użytkowników, możesz sprawdzić ten wynik i poprosić użytkowników o włączenie Play Protect lub usunięcie szkodliwych aplikacji przed kontynuowaniem.

playProtectVerdict może mieć jedną z tych wartości:
| Ocena | Wyjaśnienie | Zalecane działanie |
|---|---|---|
|
Ochrona Play Protect jest włączona i nie wykryła żadnych problemów z aplikacjami na urządzeniu. |
Play Protect jest włączony i nie wykrył żadnych problemów, więc użytkownik nie musi podejmować żadnych działań. |
|
Ochrona Play Protect jest włączona, ale skanowanie nie zostało jeszcze przeprowadzone. Urządzenie lub aplikacja Sklep Play mogły zostać niedawno zresetowane. |
Play Protect jest włączony i nie wykrył żadnych problemów, więc użytkownik nie musi podejmować żadnych działań. |
|
Ochrona Play Protect jest wyłączona. |
Play Protect jest włączony i nie wykrył żadnych problemów, więc użytkownik nie musi podejmować żadnych działań. |
|
Usługa Play Protect jest włączona i wykryła na urządzeniu potencjalnie szkodliwe aplikacje. |
W zależności od tolerancji ryzyka możesz poprosić użytkownika o uruchomienie usługi Play Protect i podjęcie działań w związku z ostrzeżeniami wyświetlanymi przez tę usługę. Jeśli użytkownik nie spełnia tych wymagań, możesz zablokować mu możliwość wykonania działania na serwerze. |
|
Usługa Play Protect jest włączona i wykryła zainstalowane na urządzeniu niebezpieczne aplikacje. |
W zależności od tolerancji ryzyka możesz poprosić użytkownika o uruchomienie usługi Play Protect i podjęcie działań w związku z ostrzeżeniami wyświetlanymi przez tę usługę. Jeśli użytkownik nie spełnia tych wymagań, możesz zablokować mu możliwość wykonania działania na serwerze. |
|
Opinia Play Protect nie została oceniona. Może się tak zdarzyć z kilku powodów. Oto niektóre z nich:
|
Ostatnia aktywność na urządzeniu
Możesz też włączyć funkcję „Ostatnia aktywność na urządzeniu”, która informuje, ile razy w ciągu ostatniej godziny Twoja aplikacja wysłała żądanie tokena integralności na określone urządzenie. Możesz użyć informacji o ostatniej aktywności na urządzeniu, aby chronić swoją aplikację przed nieoczekiwanymi, nadaktywnymi urządzeniami, które mogą wskazywać na trwający atak. Możesz określić, w jakim stopniu ufasz poszczególnym poziomom ostatniej aktywności na urządzeniu, na podstawie tego, ile razy Twoja aplikacja zainstalowana na typowym urządzeniu powinna wysyłać żądanie tokena integralności w ciągu godziny.
Jeśli wyrazisz zgodę na otrzymywanie recentDeviceActivity, pole deviceIntegrity będzie zawierać 2 wartości:
deviceIntegrity: {
deviceRecognitionVerdict: ["MEETS_DEVICE_INTEGRITY"]
recentDeviceActivity: {
// "LEVEL_2" is one of several possible values.
deviceActivityLevel: "LEVEL_2"
}
}
Najpierw sprawdź dane, aby zobaczyć typowe poziomy aktywności na urządzeniu w przypadku Twojej aplikacji na wszystkich urządzeniach. Następnie możesz określić, jak aplikacja ma reagować, gdy urządzenie wysyła zbyt wiele żądań. Jeśli aktywność jest nieco wysoka, możesz poprosić użytkownika o ponowną próbę później. Jeśli aktywność jest bardzo wysoka, możesz podjąć bardziej zdecydowane działania egzekwujące.
Żądania standardowe a klasyczne
W ramach implementacji interfejsu Play Integrity API warto wziąć pod uwagę 2 rodzaje żądań. W większości przypadków należy używać żądań standardowych, aby uzyskać najszybszą odpowiedź. Żądania klasyczne należy stosować, gdy potrzebne jest nowo wygenerowane żądanie dotyczące rekordu atestu urządzenia.
Klasyczne żądanie |
Żądanie standardowe |
|---|---|
Żądania trwają dłużej i powinny być wysyłane rzadziej. Może to być na przykład jednorazowe sprawdzenie, czy działanie o wysokiej wartości lub działanie związane z poufnymi danymi jest autentyczne. Używaj rzadko. |
Żądania charakteryzują się krótkim czasem oczekiwania i można ich używać na bieżąco. Standardowe żądanie składa się z 2 części:
Używaj na żądanie |
Więcej informacji o żądaniach standardowych i klasycznych znajdziesz w dokumentacji Play Integrity.
Implementacja
Aby zacząć korzystać z interfejsu Play Integrity API:
- Włącz odpowiedzi interfejsu Play Integrity API w Konsoli Google Play i połącz je z projektem w chmurze Google.
- Zintegruj interfejs Play Integrity API w aplikacji.
- Zdecyduj, jak będziesz postępować w przypadku decyzji.
Domyślnie interfejs Play Integrity API umożliwia wysyłanie maksymalnie 10 tys. żądań dziennie na aplikację. Jeśli chcesz zwiększyć maksymalną liczbę żądań dziennie, postępuj zgodnie z tymi instrukcjami. Aby kwalifikować się do zwiększenia maksymalnej dziennej liczby żądań, aplikacja musi prawidłowo implementować interfejs Play Integrity API i być dostępna w Google Play oraz w innych kanałach dystrybucji.
O czym warto pamiętać w przypadku interfejsu Play Integrity API
- Konieczne jest odpowiednie obsługiwanie błędów w odpowiedziach interfejsów Play Integrity API. Postępuj zgodnie z tym przewodnikiem dotyczącym strategii ponawiania i egzekwowania na podstawie kodów błędów.
- Interfejs Play Integrity API udostępnia narzędzia do testowania odpowiedzi.
- Aby zobaczyć wynik weryfikacji na urządzeniu, wykonaj te czynności.
- Zapoznaj się z tymi kwestiami związanymi z bezpieczeństwem, aby poznać zalecane praktyki korzystania z interfejsu Play Integrity API.
Automatyczna ochrona integralności (API >= 23)
Automatyczna ochrona integralności to usługa ochrony kodu przed nieuprawnionymi modyfikacjami, która chroni aplikację przed naruszeniem jej integralności w wyniku nieautoryzowanej modyfikacji lub dalszej dystrybucji. Działa bez połączenia z internetem i nie wymaga żadnej pracy programistycznej przed testowaniem ani integracji z serwerem backendu.
Jak to pomaga ograniczyć oszustwa
Gdy włączysz automatyczną ochronę integralności, Google Play doda do kodu aplikacji funkcje kontrolne, które dzięki zaawansowanym technikom zaciemniania kodu i blokowania analizowania wstecznego będą trudne do usunięcia. Podczas działania ochrona sprawdza, czy aplikacja została zmodyfikowana lub rozpowszechniona:
- Jeśli sprawdzanie instalatora da wynik negatywny, użytkownik zostanie poproszony o pobranie aplikacji z Google Play.
- W przypadku negatywnego wyniku kontroli pod kątem modyfikacji aplikacja się nie uruchomi.
Pomaga to chronić użytkowników przed zmodyfikowanymi wersjami aplikacji.
Implementacja
Automatyczna ochrona integralności jest obecnie dostępna tylko dla wybranych partnerów Google Play. Jeśli ta funkcja nie jest dostępna w Twojej Konsoli Google Play i chcesz uzyskać do niej dostęp, skontaktuj się z zespołem pomocy dla deweloperów Google Play.
Ochronę możesz włączyć podczas tworzenia wersji lub na stronie Chronione przez Google Play. Automatyczna ochrona integralności wymaga, aby aplikacja korzystała z podpisywania aplikacji przez Google Play.
Przed promowaniem wersji do produkcji przetestuj chronioną aplikację.
O czym musisz pamiętać
- Nie rozpowszechniaj niezabezpieczonych wersji aplikacji
- Zachowaj ostrożność przy łączeniu różnych rozwiązań do ochrony przed nieuprawnionymi modyfikacjami
- Testowanie chronionej aplikacji przed opublikowaniem jej wersji produkcyjnej
- Monitoruj statystyki jak zwykle, aby sprawdzić, czy nie wzrosła liczba awarii.
- Możesz zgłaszać do Google Play wersje Twojej aplikacji, których zabezpieczenia zostały złamane