Chroń prywatność użytkowników: bezpieczeństwo aplikacji na Androida dla programistów

Autor: Peter Berry
Data Utworzenia: 20 Lang L: none (month-012) 2021
Data Aktualizacji: 16 Czerwiec 2024
Anonim
Chroń prywatność użytkowników: bezpieczeństwo aplikacji na Androida dla programistów - Aplikacje
Chroń prywatność użytkowników: bezpieczeństwo aplikacji na Androida dla programistów - Aplikacje

Zawartość


Jeśli zamierzasz pozostać na widowni i swoją reputację jako wiarygodnego programisty Androida, musisz poważnie potraktować bezpieczeństwo aplikacji na Androida jako programistę.

Jeśli Twoja aplikacja wycieka kiedykolwiek z prywatnych danych, istnieje ryzyko utraty dużej części odbiorców. Dzisiejsi zaawansowani technologicznie użytkownicy urządzeń mobilnych rozumieją, że najlepszym sposobem ochrony przed niebezpieczną aplikacją jest usunięcie jej z urządzenia. Poważne naruszenia danych są również coraz częściej zgłaszane przez media, więc niechlujne podejście do bezpieczeństwa mobilnego może spowodować bardzo złą reklamę.

Stawka jest wysoka, a wraz z pojawieniem się nowych złośliwych aplikacji istnieje coraz większa szansa, że ​​Twoja aplikacja może dzielić urządzenie ze złośliwym oprogramowaniem i złośliwym kodem strony trzeciej.

Niedbałe podejście do bezpieczeństwa mobilnego może spowodować bardzo złą reklamę.

Na szczęście Android ma szeroką gamę wbudowanych funkcji bezpieczeństwa, które mogą pomóc w zamknięciu danych użytkowników. W tym artykule zajmiemy się wszystkimi głównymi funkcjami prywatności upieczonymi na platformie Android, a także dodatkowymi narzędziami, technikami i najlepszymi praktykami, których możesz użyć, aby zapewnić prywatność danych Twojej aplikacji.


Aktualizuj swoje zależności

Często zdarza się, że nowoczesne aplikacje mobilne korzystają z wielu bibliotek, zestawów SDK i wielu innych zależności. Nowe wersje tych zależności często zawierają poprawki błędów, łaty i inne funkcje bezpieczeństwa, więc musisz upewnić się, że używasz najnowszych wersji podczas tworzenia aplikacji.

Przed wdrożeniem aplikacji warto też wykonać ostatnią kontrolę, aby upewnić się, że żadne aktualizacje nie są dostępne.

Jeśli Twoja aplikacja korzysta z usług Google Play, możesz sprawdzić, czy na urządzeniu użytkownika jest zainstalowana najnowsza wersja, a następnie w razie potrzeby uruchomić aktualizację.

Aby sprawdzić, czy usługi Google Play na urządzeniu są aktualne, wywołaj metodę installIfNeeded () klasy ProviderInstaller. Jeśli aktualizacja jest dostępna, ta metoda spowoduje zgłoszenie wyjątku autoryzacji, a użytkownik zostanie poproszony o aktualizację usług Google Play na swoim urządzeniu.


Ogranicz prośby o pozwolenie

Jeśli Twoja aplikacja nie ma dostępu do uprawnienia, nie ma szans na niewłaściwe obchodzenie się z poufnymi danymi lub funkcjami związanymi z tym uprawnieniem. Ograniczenie dostępu do poufnych uprawnień może również sprawić, że Twoja aplikacja będzie mniej atrakcyjnym celem dla hakerów, dlatego ważne jest, aby poprosić o jak najmniejszą liczbę uprawnień.

Przed zrobieniem każdy prośby o pozwolenie, zastanów się, czy istnieje sposób na osiągnięcie tego samego rezultatu bez dostępu do tego pozwolenia. Na przykład, jeśli chcesz zapisać niektóre dane, możesz uzyskać dostęp do lokalnego magazynu bez żądania jakichkolwiek uprawnień, zamiast próbować zapisywać dane zewnętrznie, co wymaga pozwolenia WRITE_EXTERNAL_STORAGE.

Alternatywnie możesz użyć zamiarów, aby przekazać zadanie aplikacji, która ma już niezbędne uprawnienia. Na przykład zamiast żądać uprawnień READ_CONTACTS i WRITE_CONTACTS, możesz delegować zadanie do aplikacji Kontakty:

Zamierzony contactIntent = nowy zamiar (Intent.ACTION_INSERT); contactIntent.setType (ContactsContract.Contacts.CONTENT_TYPE); if (contactIntent.resolveActivity (getPackageManager ())! = null) {startActivity (contactIntent); }

Powinieneś także zrzec się wszelkich uprawnień, których aplikacja już nie potrzebuje, co może znacznie zmniejszyć ilość poufnych danych i funkcji, do których aplikacja ma dostęp w dowolnym momencie.

Pozwól użytkownikom zdecydować: Wyświetlenie wyboru aplikacji

Po co marnować czas i energię na wynalezienie koła? Domniemane intencje pozwalają na wykonywanie zadań we współpracy z aplikacjami innych firm, zmniejszając ilość kodu, który trzeba napisać, aby zapewnić wszystkie pożądane funkcje aplikacji. Przekazując zadanie innej aplikacji, możesz również zmniejszyć liczbę uprawnień wymaganych przez aplikację.

Domniemane intencje mogą zaoszczędzić mnóstwo czasu, ale także dają zero kontroluj, która aplikacja odpowiada na twoje żądanie. Jeśli niepewna lub złośliwa aplikacja strony trzeciej odpowiada na twoje ukryte zamiary, istnieje szansa, że ​​przypadkowo możesz ujawnić dane osobowe użytkownika stronie trzeciej.Jeśli prywatność użytkownika zostanie naruszona w wyniku aplikacji innej firmy, Twoja aplikacja może zostać uznana za winną przez skojarzenie.

Wydając dorozumiany zamiar, należy w miarę możliwości wyświetlać selektor aplikacji Androida.

Przedstawiając użytkownikowi listę wszystkich aplikacji, które mogą odpowiedzieć na ten zamiar, dajesz mu możliwość wyboru aplikacji, której osobiście ufa. Chociaż nie ma żadnej gwarancji, że każdy użytkownik wybierze mądrze, może to zmniejszyć szanse udostępniania danych przez niewiarygodną aplikację.

Wydając zamiar, powinieneś sprawdzić, czy użytkownik ma wiele aplikacji, które mogą obsłużyć ten zamiar. Zakładając, że dostępnych jest wiele kompatybilnych aplikacji, możesz wyświetlić selektor aplikacji, wywołując metodę createChooser () i przekazując ją do startActivity ():

Intent myIntent = nowy Intent (Intent.ACTION_SEND); Lista ossibleActivitiesList = queryIntentActivities (intent, PackageManager.MATCH_ALL); // Sprawdź, czy więcej niż jedna aplikacja może obsłużyć ten zamiar // if (ossibleActivitiesList.size ()> 1) {// Wyświetl selektor aplikacji // String title = getResources (). GetString (R.string.app_chooser_title); Wybór zamiaru = Intent.createChooser (zamiar, tytuł); startActivity (selektor); } else if (intent.resolveActivity (getPackageManager ())! = null) {startActivity (intent); }

Pamiętaj, że nigdy nie powinieneś używać domniemanego zamiaru, aby uruchomić Usługę, ponieważ nie będziesz mieć kontroli nad tym, która Usługa zareaguje na twoje ukryte zamiary.

Unikaj pamięci zewnętrznej

Musisz upewnić się, że wszelkie dane przechowywane na urządzeniu użytkownika nie są dostępne dla innych aplikacji - chyba że wyrazisz wyraźną zgodę na te aplikacje.

Pliki zapisane w pamięci zewnętrznej są globalnie odczytywalne i zapisywane, więc wszelkie dane zapisane w pamięci zewnętrznej mogą być dostępne i modyfikowane przez dowolną inną aplikację. Nie ma również gwarancji, że zewnętrzny nośnik danych pozostanie podłączony do bieżącego smartfona lub tabletu. Jeśli aplikacja zapisuje w pamięci zewnętrznej, być może potencjalnie zapisujesz poufne dane użytkownika na karcie SD, która później zostanie usunięta i włożona do urządzenia innej osoby!

O ile nie masz konkretnego powodu, aby tego nie robić, zawsze należy zapisywać dane w pamięci wewnętrznej, w której są one izolowane i będą domyślnie dostępne tylko dla Twojej aplikacji. Ponadto, jeśli użytkownik odinstaluje aplikację, wszystkie pliki aplikacji zostaną automatycznie usunięte z pamięci wewnętrznej, więc nie musisz się martwić o pozostawienie poufnych informacji.

W poniższym fragmencie zapisujemy dane w pamięci wewnętrznej:

końcowy ciąg FILE_NAME = "user_data.txt"; String fileContents = "Ten plik tekstowy zawiera poufne dane użytkownika"; try (BufferedWriter writer = new BufferedWriter (nowy FileWriter (nowy plik (getFilesDir (), FILE_NAME)))) {writer.write (fileContents); } catch (IOException e) {// Do zrobienia: Obsługa wyjątku //}

Jeśli dane są szczególnie wrażliwe, możesz zapewnić dodatkowe zabezpieczenia aplikacji na Androida, szyfrując pliki kluczem niedostępnym dla Twojej aplikacji, na przykład kluczem umieszczonym w magazynie kluczy i chronionym hasłem, które nie jest przechowywane urządzenie.

Skorzystaj z nowego dostępu do katalogu dla Androida

Czasami aplikacja może wymagać dostępu do określonych katalogów w pamięci zewnętrznej urządzenia, na przykład uzyskania dostępu do zewnętrznego katalogu Obrazy urządzenia.

Chociaż możesz poprosić o uprawnienie READ_EXTERNAL_STORAGE, często zapewni to Twojej aplikacji dostęp do większej ilości danych, niż potrzebuje. Aplikacja nie może źle obsługiwać danych, do których nie ma dostępu, dlatego w miarę możliwości należy starać się minimalizować ilość informacji, do których może uzyskać dostęp aplikacja.

Zamiast poprosić o uprawnienie READ_EXTERNAL_STORAGE, możesz poprosić o dostęp do określonego katalogu. To zakres dostępu do katalogu wymaga użycia klasy StorageManager, a następnie utworzenia zamiaru poprzez wywołanie metody StorageVolume.createAccessIntent () tego wystąpienia. Na przykład w poniższym fragmencie uzyskujemy dostęp do zewnętrznego katalogu Pictures:

StorageManager newStorageManager = (StorageManager) getSystemService (Context.STORAGE_SERVICE); StorageVolume volume = newStorageManager.getPrimaryStorageVolume (); Intent intent = volume.createAccessIntent (Environment.DIRECTORY_PICTURES); startActivityForResult (intent, kod_danych);

Jeśli użytkownik przyzna Twojej aplikacji dostęp do tego katalogu zewnętrznego, system Android wywoła zastąpienie onActivityResult () z kodem wyniku RESULT_OK oraz intencją zawierającą identyfikator URI dla żądanego katalogu.

Nigdy nie buforuj wrażliwych danych użytkownika

Podczas obsługi niewrażliwych danych aplikacji możesz poprawić wrażenia użytkownika, przechowując te dane w pamięci podręcznej urządzenia.

W przypadku pamięci podręcznych większych niż 1 MB można użyć metody getExternalCacheDir (), która zwróci ścieżkę do katalogu aplikacji, w którym można przechowywać buforowaną zawartość.

Jeśli zdecydujesz się na buforowanie, pamiętaj, że każda aplikacja, która ma uprawnienie WRITE_EXTERNAL_STORAGE, może potencjalnie zapisywać w tych plikach, dlatego powinieneś nigdy przechowuj prywatne lub poufne informacje w pamięci podręcznej, jeśli zależy Ci na bezpieczeństwie aplikacji na Androida.

Chroń swoje klucze przed nieautoryzowanym użyciem

System Android Keystore pozwala przechowywać klucze kryptograficzne w kontenerze, co utrudnia wyodrębnienie tych kluczy z urządzenia.

Magazyn kluczy Android zapewnia, że ​​kluczowy materiał nigdy nie wejdzie w proces aplikacji, więc nawet jeśli procesy aplikacji zostaną naruszone, a atakujący zdoła uzyskać dostęp do twoich kluczy, nie będzie w stanie wyodrębnić ich klucza.

Możesz również użyć magazynu kluczy, aby ograniczyć czas i sposób używania kluczy, na przykład możesz ograniczyć użycie klucza do niektórych trybów kryptograficznych lub wymagać uwierzytelnienia użytkownika.

Ustaw swoich dostawców treści prywatnie

ContentProviders to ustrukturyzowany mechanizm przechowywania, który możesz ustawić jako prywatny dla swojej aplikacji lub wybrać eksport, w którym to momencie staną się oni dostępni dla innych aplikacji.

O ile nie musisz jawnie udostępniać danych aplikacji innej firmy, powinieneś ustawić wszystkich swoich dostawców treści jako prywatnych, oznaczając je jako android: wyeksportowane = fałsz w Manifeście aplikacji. Jeśli Twoja aplikacja jest kompatybilna z Androidem 4.1.1 lub starszym, szczególnie ważne jest, aby oznaczyć prywatnych dostawców treści jako Androida: wyeksportowane = fałsz, ponieważ domyślnie wszyscy dostawcy treści są publiczni.

Odcisk palca dla użytkowników dzięki uwierzytelnianiu biometrycznemu

Przed zezwoleniem użytkownikowi na dostęp do poufnych informacji lub funkcji aplikacji należy zweryfikować jego tożsamość, prosząc o podanie poświadczeń.

Poświadczenia użytkownika mogą mieć postać kodu PIN lub hasła, jednak tam, gdzie to możliwe, o wiele bezpieczniej jest przeprowadzić uwierzytelnianie biometryczne, na przykład poprzez żądanie odcisku palca użytkownika.

Śledzić wszystko najlepsze praktyki sieciowe

W przeciwieństwie do mniej przenośnych urządzeń, takich jak komputery stacjonarne, często podłączamy nasze smartfony i tablety do niezabezpieczonych sieci bezprzewodowych, takich jak bezpłatne publiczne Wi-Fi. Aby zachować prywatność użytkownika, wszystkie transakcje sieciowe należy traktować jako z natury ryzykowne, w szczególności kiedy przesyłasz dane użytkownika.

Ilekroć musisz wykonać transakcję sieciową, ważne jest, aby przestrzegać wszystkich najlepszych praktyk sieciowych Androida:

  • Używaj HTTPS zamiast HTTP, ilekroć jest obsługiwany na serwerze.
  • Nigdy nie ufaj danym pobranym z niezabezpieczonych protokołów, w tym odpowiedzi wysłanych przeciwko HTTP.
  • Użyj odpowiednich protokołów do poufnych danych, takich jak HttpsURLConnection.
  • Tam, gdzie możliwe jest uwierzytelnianie, użyj mechanizmu Android IPC, takiego jak Usługa.
  • Skorzystaj z narzędzia bezpieczeństwa sieci Nogotofail typu open source, aby przetestować swoją aplikację pod kątem znanych luk w zabezpieczeniach TLS / SSL i błędnych konfiguracji. Nogotofail obejmuje testy typowych problemów z weryfikacją certyfikatów SSL, błędów biblioteki HTTPS i TLS / SSL, problemów z tekstem jawnym oraz problemów z usuwaniem SSL i STARTTLS. Aby uzyskać więcej informacji, odwiedź stronę GitHub Nogotofail.
  • Tam, gdzie to możliwe, unikaj ładowania kodu spoza pliku APK, ponieważ zwiększa to szanse, że ktoś w sieci zmodyfikuje kod podczas przesyłania.

Ostrożnie korzystaj z WebView

Komponent WebView może pobierać HTML i JavaScript, więc jeśli nieprawidłowo używasz WebView, twoja aplikacja będzie podatna na typowe problemy z bezpieczeństwem sieci, takie jak skrypty między witrynami.

W przypadku nieprawidłowego korzystania z WebView Twoja aplikacja będzie podatna na typowe problemy z bezpieczeństwem w sieci.

Aby zapewnić bezpieczeństwo użytkownikom Androida, komponent WebView domyślnie nie wykonuje JavaScript. Jednak w razie potrzeby można włączyć JavaScript, używając getSettings () do pobrania WebSettings, a następnie uruchamiając metodę setJavaScriptEnabled ():

WebView myWebView = (WebView) findViewById (R.id.webview); WebSettings webSettings = myWebView.getSettings (); webSettings.setJavaScriptEnabled (true);

Nawet jeśli musisz włączyć JavaScript, powinieneś unikać korzystania z addJavaScriptInterface () w miarę możliwości, ponieważ ta metoda wstrzykuje dostarczony obiekt Java do komponentu WebView. Jeśli Twoja aplikacja jest zainstalowana na urządzeniu z Androidem 4.2 lub starszym, ta metoda może potencjalnie pozwolić JavaScriptowi na manipulowanie aplikacją.

Jeśli korzystasz z WebViews, nie powinieneś zezwalać użytkownikom na przechodzenie do dowolnej witryny, nad którą nie masz kontroli, ale w szczególności powinieneś nigdy użyj metody addJavascriptInterface (), jeśli użytkownik może potencjalnie przejść do niezaufanej strony internetowej, ponieważ jest to ogromne zagrożenie bezpieczeństwa aplikacji na Androida.

Nigdy nie należy używać metody addJavascriptInterface (), jeśli użytkownik może potencjalnie przejść do niezaufanej strony internetowej.

Jeśli twój komponent WebView uzyskuje dostęp do jakichkolwiek danych osobowych, możesz okresowo usuwać pliki przechowywane lokalnie, korzystając z metody clearCache (). Alternatywnie możesz uniemożliwić aplikacji buforowanie poufnych treści za pomocą nagłówka po stronie serwera bez pamięci podręcznej.

Zarządzaj aplikacją Secure Sockets Layer (SSL)

SSL jest powszechnym składnikiem szyfrowanej komunikacji między klientami a serwerami. Jeśli Twoja aplikacja nieprawidłowo korzysta z protokołu SSL, złośliwe strony trzecie mogą potencjalnie przechwycić dane aplikacji podczas jej przesyłania przez sieć.

Zazwyczaj serwer jest skonfigurowany z certyfikatem zawierającym klucz publiczny i pasujący klucz prywatny. W ramach komunikacji między klientem SSL a serwerem serwer podpisze swój certyfikat za pomocą kryptografii klucza publicznego. Możliwe jest jednak, że strona trzecia wygeneruje własny certyfikat i klucz prywatny, więc twój klient powinien również mieć jeden lub więcej certyfikatów, którym ufa. Jeśli certyfikat nie jest ustawiony, aplikacja nie powinna ufać serwerowi.

Aby ułatwić ten proces, serwery są często konfigurowane przy użyciu certyfikatów znanych urzędów certyfikacji. Począwszy od poziomu API 17, system Android obsługuje ponad 100 urzędów certyfikacji, które są aktualizowane w każdej wersji. Wydając certyfikat dla serwera, urząd certyfikacji podpisze certyfikat serwera przy użyciu swojego klucza prywatnego, a następnie klient może sprawdzić, czy certyfikat został wydany przez urząd certyfikacji znany i ufany przez platformę Android.

Jeśli Twoja aplikacja komunikuje się z serwerem WWW, który ma certyfikat wydany przez zaufany urząd certyfikacji, możesz złożyć wniosek w kilku wierszach kodu:

URL URL = nowy adres URL („https://www.google.com”); HttpsURLConnection urlConnection = (HttpsURLConnection) url.openConnection (); urlConnection.connect (); InputStream in = urlConnection.getInputStream ();

Istnieją jednak scenariusze, w których powyższy kod spowoduje wyjątek:

  • Urząd certyfikacji, który wystawił certyfikat serwera, jest nieznany. W tym scenariuszu możesz nauczyć HttpsURLConnection, aby ufał temu zestawowi urzędów certyfikacji.
  • Certyfikat serwera został samopodpisany, co oznacza, że ​​serwer działa jako własny urząd certyfikacji. W przypadku certyfikatów z podpisem własnym można utworzyć własnego menedżera zaufania, chociaż należy upewnić się, że certyfikat z podpisem własnym ma silny klucz.
  • W konfiguracji serwera brakuje pośredniego urzędu certyfikacji. Wiele publicznych urzędów certyfikacji nie podpisuje certyfikatów serwerów bezpośrednio. System Android ufa tylko głównym urzędom certyfikacji, dlatego serwer będzie musiał wysłać łańcuch certyfikatów z urzędu certyfikacji serwera za pośrednictwem pośredników wymaganych do uzyskania dostępu do katalogu głównego. Jeśli nie możesz skonfigurować serwera tak, aby zawierał pośredni urząd certyfikacji w łańcuchu serwerów, jednym z możliwych obejść jest utworzenie własnego menedżera zaufania.

Tworzenie pliku konfiguracji zabezpieczeń sieci: Ufanie niestandardowym urzędom certyfikacji

Jeśli chcesz, aby aplikacja korzystała z nowego lub niestandardowego urzędu certyfikacji, musisz utworzyć plik konfiguracji zabezpieczeń sieci, w którym określisz ustawienia zabezpieczeń sieci.

Aby utworzyć plik konfiguracji zabezpieczeń sieci:

  • Jeśli twój projekt nie zawiera jeszcze folderu XML, musisz go utworzyć. Kliknij z wciśniętym klawiszem Control folder res projektu i wybierz Nowy> Katalog zasobów Androida.
  • Utwórz nowy plik zasobów XML w katalogu XML, który będzie służyć jako plik konfiguracji zabezpieczeń sieci. Nazywam ten plik network_config.
  • Otwórz plik konfiguracji sieci i określ, że cały ruch do następujących domen powinien korzystać z HTTPS:

// Wyłącz czysty tekst // // Zastosuj tę regułę do domeny i wszystkich jej poddomen // moja.domena.com ... ... ...

Możesz teraz określić zestaw niestandardowych urzędów certyfikacji, którym Twoja aplikacja powinna ufać. Na przykład, jeśli chcesz połączyć się z hostem korzystającym z urzędu certyfikacji z podpisem własnym, dodaj do pliku konfiguracji Network Security:

moja.domena.com // Zestaw kotwic zaufania dla bezpiecznych połączeń // // Zestaw certyfikatów dla elementów zakotwiczenia zaufania i źródła tych certyfikatów //

Nie zapomnij zadeklarować pliku konfiguracji zabezpieczeń sieci w swoim Manifeście:

Następnie musisz dodać zaufane urzędy certyfikacji do res / raw / trust_cas projektu, w formacie PEM lub DER.

Zaufaj dodatkowym urzędom certyfikacji, w stosownych przypadkach

Wreszcie możesz zaufać dodatkowym urzędom certyfikacji, które nie są znane platformie Android. Aby zwiększyć liczbę urzędów certyfikacji, którym ufa Twoja aplikacja, musisz określić wiele źródeł certyfikatów:

Nigdy nie wysyłaj wrażliwych danych SMS-em

Jeśli chcesz przesłać dane z serwera do aplikacji, powinieneś użyć Google Cloud Messaging (GCM) i wiadomości IP, a nigdy niezaszyfrowanego protokołu SMS.

Przeczytaj także: Opracowywanie Androida: jak nawiązywać połączenia, odbierać SMS-y i odzyskiwać kontakty użytkowników

Nigdy nie powinieneś również wykonywać wrażliwych poleceń za pomocą SMS-ów, ponieważ SMS-y są przesyłane jako intencje rozgłoszeniowe, co oznacza, że ​​każda aplikacja z uprawnieniem READ_SMS będzie mogła uzyskać dostęp do ich treści.

Chroń przed zagrożeniami bezpieczeństwa za pomocą interfejsów API SafetyNet

SafetyNet zapewnia zestaw usług i interfejsów API, których można użyć do ochrony aplikacji przed zagrożeniami bezpieczeństwa, takimi jak sabotaż urządzenia, złośliwe adresy URL i fałszywi użytkownicy.

Android obsługuje następujące interfejsy API SafetyNet:

  • SafetyNet Attestation API. Ten interfejs API do zapobiegania nadużyciom umożliwia dostęp do urządzenia z Androidem, na którym działa aplikacja, dzięki czemu możesz ustalić, czy Twoje serwery współdziałają z oryginalnym urządzeniem.
  • SafetyNet Safe Browsing API. Za pomocą tego interfejsu API można ustalić, czy Google sklasyfikował określony adres URL jako znane zagrożenie.
  • SafetyNet reCAPTCHA API. Ta usługa zawiera interfejs API reCAPTCHA, którego można użyć do ochrony aplikacji przed zagrożeniami, takimi jak spam i złośliwy ruch. Jeśli interfejs API podejrzewa, że ​​Twoja aplikacja wchodzi w interakcję z botem, wyświetli CAPTCHA, który odbiorca musi rozwiązać, zanim będzie mógł nadal korzystać z Twojej aplikacji.
  • SafetyNet Verify Apps API. Jeśli Twoja aplikacja zawiera poufne dane użytkownika, możesz użyć tego interfejsu API do interakcji z funkcją Verify Apps na urządzeniu i sprawdzić, czy urządzenie jest wolne od złośliwych aplikacji. Jeśli urządzenie nie jest bezpieczne, możesz ograniczyć obrażenia, wyłączając wszystkie wrażliwe funkcje aplikacji. Pamiętaj, że chociaż SafetyNet ostrzega użytkowników o wszelkich potencjalnie szkodliwych aplikacjach, które odkryje, nie ma gwarancji, że użytkownik faktycznie je odinstaluje. Ponadto przez cały czas pojawiają się złośliwe aplikacje, a hakerzy zawsze wymyślają nowe i genialne sposoby na włamanie się pod radar, więc nawet jeśli urządzenie przejdzie test SafetyNet, nie należy zakładać, że nie ma żadnych szkodliwych aplikacji na urządzenie.

Aby uzyskać więcej informacji na temat interfejsów API SafetyNet, w tym instrukcje ich używania w aplikacjach, zapoznaj się z oficjalnymi dokumentami systemu Android.

Użyj chronionego potwierdzenia Android dla poufnych transakcji

Jeśli Twoja aplikacja musi wykonać poufną transakcję, na przykład dokonać płatności, możesz użyć chronionego potwierdzenia Android na urządzeniach z Androidem 9 (poziom API 28) lub wyższy.

Za każdym razem, gdy użytkownik próbuje przeprowadzić poufną transakcję, Android Protected Confirmation wyświetli monit z prośbą o zaakceptowanie krótkiego wyciągu. Jeśli użytkownik zatwierdzi to oświadczenie, możesz podpisać klucz przy użyciu magazynu kluczy Android.

Aby uzyskać więcej informacji, a także instrukcje dotyczące implementacji Android Protected Confirmation, sprawdź oficjalne dokumenty Androida.

Android 10: Uruchom bezpośrednio wbudowany kod DEX

Na urządzeniach z Androidem 10 (API poziom 29) i nowszym można uruchomić osadzony kod DEX bezpośrednio z pliku APK aplikacji, co może pomóc w zapobieganiu atakowi, nawet jeśli hakerowi uda się sfałszować lokalnie skompilowany kod urządzenia.

Czytaj także: Eksplorowanie Androida P: Dodawanie powiadomień bąbelkowych do aplikacji

Aby włączyć tę nową funkcję zabezpieczeń, otwórz manifest projektu i dodaj do elementu:

Następnie musisz zbudować plik APK zawierający nieskompresowany kod DEX, do którego ART może uzyskać bezpośredni dostęp. Otwórz plik build.gradle i dodaj następujące elementy:

aaptOptions {noCompress dex}

Pamiętaj tylko, że ART uruchomi kompilator JIT po uruchomieniu aplikacji, co może mieć wpływ na wydajność aplikacji.

Podsumowując

W tym artykule omówiliśmy wszystkie najlepsze praktyki, narzędzia, interfejsy API i techniki, których możesz użyć, aby utrzymać bezpieczeństwo aplikacji na Androida.

Czy masz jakieś porady dotyczące zwiększenia bezpieczeństwa aplikacji? Podziel się wskazówkami w komentarzach poniżej!

Więkzość dotawców najlepzych uług VPN oferuje klientów lub aplikacje pecyficzne dla platformy, które można pobrać, aby zybko i łatwo połączyć ię z erwerem. Itnieje jednak kilka ytuacji,...

Itnieje kilka poobów konfigurowania ieci VPN w ytemie Window 10. Najłatwiej jet pobrać aplikację VPN na komputer, zalogować ię i połączyć z erwerem za pomocą jednego kliknięcia przyciku. Zadanie ...

Nowe Publikacje