Schützen Sie die Privatsphäre Ihrer Benutzer: Android-App-Sicherheit für Entwickler

Autor: Peter Berry
Erstelldatum: 20 Lang L: none (month-012) 2021
Aktualisierungsdatum: 16 Juni 2024
Anonim
Schützen Sie die Privatsphäre Ihrer Benutzer: Android-App-Sicherheit für Entwickler - Apps
Schützen Sie die Privatsphäre Ihrer Benutzer: Android-App-Sicherheit für Entwickler - Apps

Inhalt


Wenn Sie sich an Ihr Publikum halten möchten und Wenn Sie den Ruf eines vertrauenswürdigen Android-Entwicklers haben, müssen Sie die Sicherheit von Android-Apps als Entwickler ernst nehmen.

Wenn Ihre App jemals private Daten verliert, besteht die Gefahr, dass Sie einen großen Teil Ihrer Zielgruppe verlieren. Heutige technisch versierte mobile Benutzer wissen, dass der beste Schutz gegen eine unsichere App darin besteht, sie von ihrem Gerät zu entfernen. Schwerwiegende Datenverletzungen werden auch zunehmend von den Medien gemeldet, sodass ein nachlässiger Umgang mit der mobilen Sicherheit zu einer sehr schlechten Publizität führen kann.

Es steht viel auf dem Spiel, und da ständig neue bösartige Apps veröffentlicht werden, steigt die Wahrscheinlichkeit, dass Ihre App ein Gerät mit Malware und bösartigem Code von Drittanbietern gemeinsam nutzt.

Ein nachlässiger Ansatz für die mobile Sicherheit kann zu einer sehr schlechten Publizität führen.


Zum Glück verfügt Android über eine Vielzahl integrierter Sicherheitsfunktionen, mit denen die Daten Ihrer Benutzer gut geschützt werden können. In diesem Artikel werden alle wichtigen Datenschutzfunktionen der Android-Plattform sowie zusätzliche Tools, Techniken und bewährte Methoden erläutert, mit denen Sie sicherstellen können, dass Ihre privaten Anwendungsdaten privat bleiben.

Halten Sie Ihre Abhängigkeiten auf dem neuesten Stand

Es ist nicht ungewöhnlich, dass moderne mobile Apps mehrere Bibliotheken, SDKs und viele andere Abhängigkeiten verwenden. Neue Versionen dieser Abhängigkeiten enthalten häufig Fehlerkorrekturen, Patches und andere Sicherheitsfunktionen. Sie müssen daher sicherstellen, dass Sie bei der Entwicklung Ihrer App die neuesten Versionen verwenden.


Vor der Bereitstellung Ihrer App empfiehlt es sich, eine letzte Überprüfung durchzuführen, um sicherzustellen, dass keine Updates verfügbar sind.

Wenn Ihre App Google Play Services verwendet, können Sie überprüfen, ob auf dem Gerät des Nutzers die neueste Version installiert ist, und bei Bedarf ein Update auslösen.

Rufen Sie die installIfNeeded () -Methode der ProviderInstaller-Klasse auf, um zu testen, ob die Google Play-Dienste des Geräts auf dem neuesten Stand sind. Wenn ein Update verfügbar ist, löst diese Methode eine Autorisierungsausnahme aus und der Nutzer wird aufgefordert, die Google Play-Dienste auf seinem Gerät zu aktualisieren.

Begrenzen Sie Ihre Erlaubnisanfragen

Wenn Ihre App keinen Zugriff auf eine Berechtigung hat, besteht keine Wahrscheinlichkeit, dass sie vertrauliche Daten oder Funktionen, die mit dieser Berechtigung verknüpft sind, falsch verarbeitet. Das Einschränken des Zugriffs auf vertrauliche Berechtigungen kann Ihre App auch für Hacker weniger attraktiv machen. Es ist daher wichtig, so wenig Berechtigungen wie möglich anzufordern.

Vor dem machen irgendein Berechtigungsanforderungen sollten Sie prüfen, ob es eine Möglichkeit gibt, dasselbe Ergebnis zu erzielen, ohne Zugriff auf diese Berechtigung zu haben. Wenn Sie beispielsweise einige Daten speichern müssen, können Sie auf den lokalen Speicher zugreifen, ohne Berechtigungen anzufordern, anstatt zu versuchen, die Daten extern zu speichern, was die Berechtigung WRITE_EXTERNAL_STORAGE erfordert.

Alternativ können Sie möglicherweise Absichten verwenden, um eine Aufgabe an eine Anwendung zu übergeben, die bereits über die erforderlichen Berechtigungen verfügt. Anstatt beispielsweise die Berechtigungen READ_CONTACTS und WRITE_CONTACTS anzufordern, können Sie eine Aufgabe an die Anwendung "Kontakte" delegieren:

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

Sie sollten auch alle Berechtigungen aufgeben, die für Ihre App nicht mehr erforderlich sind, wodurch die Menge an vertraulichen Daten und Funktionen, auf die Ihre App jederzeit zugreifen kann, erheblich reduziert werden kann.

Lassen Sie Ihre Benutzer entscheiden: Anzeigen der App-Auswahl

Warum Zeit und Energie verschwenden, um das Rad neu zu erfinden? Mit impliziten Absichten können Sie Aufgaben in Zusammenarbeit mit Anwendungen von Drittanbietern ausführen und so die Menge an Code reduzieren, die Sie schreiben müssen, um alle gewünschten Funktionen Ihrer App bereitzustellen. Indem Sie eine Aufgabe an eine andere Anwendung übergeben, können Sie möglicherweise auch die Anzahl der Berechtigungen verringern, die für Ihre Anwendung erforderlich sind.

Implizite Absichten können Ihnen eine Menge Zeit sparen, aber sie geben Ihnen auch Zeit Null Kontrolle darüber, welche Anwendung auf Ihre Anfrage reagiert. Wenn eine unsichere oder böswillige App eines Drittanbieters auf Ihre implizite Absicht reagiert, besteht die Möglichkeit, dass Sie die persönlichen Daten des Benutzers versehentlich einem Dritten aussetzen.Wenn die Privatsphäre des Nutzers durch eine Drittanbieteranwendung verletzt wird, wird Ihre App möglicherweise von der Vereinigung als schuldig eingestuft.

Wenn Sie eine implizite Absicht festlegen, sollten Sie nach Möglichkeit die App-Auswahl von Android anzeigen.

Indem Sie dem Benutzer eine Liste aller Anwendungen anzeigen, die auf diese Absicht reagieren können, können Sie ihm die Möglichkeit geben, eine Anwendung auszuwählen, der er persönlich vertraut. Es gibt zwar keine Garantie dafür, dass jeder einzelne Benutzer mit Bedacht wählt, dies kann jedoch die Wahrscheinlichkeit verringern, dass Sie Daten mit einer nicht vertrauenswürdigen App teilen.

Wenn Sie eine Absicht ausgeben, sollten Sie prüfen, ob der Benutzer über mehrere Anwendungen verfügt, die diese Absicht verarbeiten können. Unter der Annahme, dass mehrere kompatible Apps verfügbar sind, können Sie die App-Auswahl anzeigen, indem Sie createChooser () aufrufen und an startActivity () übergeben:

Intent myIntent = new Intent (Intent.ACTION_SEND); Liste possibleActivitiesList = queryIntentActivities (intent, PackageManager.MATCH_ALL); // Prüfe, ob mehr als eine App mit dieser Absicht umgehen kann // if (possibleActivitiesList.size ()> 1) {// Zeige die App-Auswahl an // String title = getResources (). GetString (R.string.app_chooser_title); Intent chooser = Intent.createChooser (Intent, Titel); startActivity (Auswahl); } else if (intent.resolveActivity (getPackageManager ())! = null) {startActivity (intent); }

Beachten Sie, dass Sie zum Starten eines Dienstes niemals eine implizite Absicht verwenden sollten, da Sie keine Kontrolle darüber haben, welcher Dienst auf Ihre implizite Absicht reagiert.

Vermeiden Sie externe Lagerung

Sie müssen sicherstellen, dass keine Daten, die Sie auf dem Gerät des Benutzers speichern, für andere Anwendungen zugänglich sind - es sei denn, Sie erteilen diesen Apps die ausdrückliche Genehmigung.

Dateien, die auf einem externen Speicher gespeichert sind, können global gelesen und geschrieben werden, sodass auf alle Daten, die Sie auf einem externen Speicher speichern, möglicherweise von einer anderen Anwendung zugegriffen und geändert werden kann. Es kann auch nicht garantiert werden, dass ein externes Speichermedium mit dem aktuellen Smartphone oder Tablet verbunden bleibt. Wenn Ihre App in einen externen Speicher schreibt, können Sie möglicherweise vertrauliche Benutzerdaten auf einer SD-Karte speichern, die später entfernt und in das Gerät eines anderen eingelegt wird.

Sofern Sie keinen bestimmten Grund haben, sollten Sie Daten immer im internen Speicher speichern, wo sie in einer Sandbox gespeichert sind und nur standardmäßig für Ihre App verfügbar sind. Wenn ein Benutzer Ihre Anwendung deinstalliert, werden alle Dateien Ihrer App automatisch aus dem internen Speicher gelöscht, sodass Sie sich keine Sorgen mehr machen müssen, dass vertrauliche Informationen zurückbleiben.

Im folgenden Snippet schreiben wir Daten in den internen Speicher:

final String FILE_NAME = "user_data.txt"; String fileContents = "Diese Textdatei enthält sensible Benutzerdaten"; try (BufferedWriter writer = new BufferedWriter (neuer FileWriter (neue Datei (getFilesDir (), FILE_NAME))) {writer.write (fileContents); } catch (IOException e) {// Aufgabe: Ausnahme behandeln //}

Wenn die Daten besonders vertraulich sind, können Sie zusätzliche Sicherheit für Android-Apps bieten, indem Sie die Dateien mit einem Schlüssel verschlüsseln, auf den Ihre App nicht zugreifen kann, z. B. einem Schlüssel, der in einem Keystore abgelegt und durch ein Kennwort geschützt ist, das nicht gespeichert ist das Gerät.

Verwenden Sie den neuen Verzeichniszugriff für Android

In einigen Fällen kann es erforderlich sein, dass eine App auf bestimmte Verzeichnisse im externen Speicher eines Geräts zugreift, z. B. auf das externe Bilderverzeichnis des Geräts.

Während Sie die READ_EXTERNAL_STORAGE-Berechtigung anfordern können, wird Ihre App häufig Zugriff auf mehr Daten erhalten, als sie benötigt. Es ist unmöglich, dass eine App Daten falsch verarbeitet, auf die sie keinen Zugriff hat. Versuchen Sie daher, die Menge an Informationen, auf die Ihre Anwendung zugreifen kann, nach Möglichkeit zu minimieren.

Anstatt die Berechtigung READ_EXTERNAL_STORAGE anzufordern, können Sie den Zugriff auf ein bestimmtes Verzeichnis anfordern. Dies Zugriff auf Verzeichnisse mit Gültigkeitsbereich erfordert, dass Sie die StorageManager-Klasse verwenden und anschließend eine Absicht erstellen, indem Sie die StorageVolume.createAccessIntent () -Methode dieser Instanz aufrufen. Im folgenden Snippet greifen wir beispielsweise auf das externe Bilderverzeichnis zu:

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

Wenn der Benutzer Ihrer App Zugriff auf dieses externe Verzeichnis gewährt, ruft Android die Überschreibung von onActivityResult () mit dem Ergebniscode RESULT_OK sowie einer Absicht auf, die den URI für das angeforderte Verzeichnis enthält.

Niemals sensible Benutzerdaten zwischenspeichern

Beim Umgang mit nicht vertraulichen Anwendungsdaten können Sie möglicherweise die Benutzererfahrung verbessern, indem Sie diese Daten im Cache des Geräts speichern.

Für Caches, die größer als 1 MB sind, können Sie getExternalCacheDir () verwenden, das den Pfad zu einem anwendungsspezifischen Verzeichnis zurückgibt, in dem Sie Ihren zwischengespeicherten Inhalt speichern können.

Wenn Sie sich für den Cache entscheiden, müssen Sie lediglich berücksichtigen, dass jede Anwendung mit der Berechtigung WRITE_EXTERNAL_STORAGE möglicherweise in diese Dateien schreiben kann noch nie Speichern Sie private oder vertrauliche Informationen im Cache, wenn Sie Wert auf die Sicherheit von Android-Apps legen.

Schützen Sie Ihre Schlüssel vor unbefugter Benutzung

Mit dem Android-Keystore-System können Sie kryptografische Schlüssel in einem Container speichern, was das Extrahieren dieser Schlüssel vom Gerät erschwert.

Der Android-Keystore stellt sicher, dass Schlüsselmaterial niemals in den Anwendungsprozess gelangt. Selbst wenn die Prozesse Ihrer Anwendung gefährdet sind und ein Angreifer auf Ihre Schlüssel zugreifen kann, kann er das Schlüsselmaterial nicht extrahieren.

Sie können den Keystore auch verwenden, um einzuschränken, wann und wie Ihre Schlüssel verwendet werden können. Beispielsweise können Sie die Schlüsselverwendung auf bestimmte kryptografische Modi beschränken oder eine Benutzerauthentifizierung erfordern.

Machen Sie Ihre ContentProvider privat

ContentProvider sind ein strukturierter Speichermechanismus, den Sie für Ihre Anwendung privat machen oder für den Export auswählen können. Ab diesem Zeitpunkt können andere Apps auf sie zugreifen.

Sofern Sie Daten nicht explizit für eine Drittanbieteranwendung freigeben müssen, sollten Sie alle Ihre ContentProvider als privat kennzeichnen, indem Sie sie im Manifest Ihrer Anwendung als android: exported = false kennzeichnen. Wenn Ihre Anwendung mit Android 4.1.1 oder niedriger kompatibel ist, ist es besonders wichtig, dass Sie Ihre privaten ContentProvider als android kennzeichnen: exported = false, da alle ContentProvider standardmäßig öffentlich sind.

Fingerabdruck Ihrer Benutzer mit biometrischer Authentifizierung

Bevor Sie einem Benutzer erlauben, auf vertrauliche Informationen oder Funktionen Ihrer App zuzugreifen, sollten Sie seine Identität überprüfen, indem Sie ihn nach seinen Anmeldeinformationen fragen.

Benutzeranmeldeinformationen können in Form einer PIN oder eines Kennworts vorliegen. Es ist jedoch weitaus sicherer, eine biometrische Authentifizierung durchzuführen, z. B. indem Sie den Fingerabdruck des Benutzers anfordern.

Folgen alle Best Practices für die Vernetzung

Im Gegensatz zu weniger tragbaren Geräten wie Desktop-Computern verbinden wir unsere Smartphones und Tablets häufig mit ungesicherten drahtlosen Netzwerken wie kostenlosem öffentlichem WLAN. Um die Privatsphäre des Benutzers zu schützen, sollten Sie alle Netzwerktransaktionen als inhärent riskant betrachten. insbesondere wenn Sie Benutzerdaten übertragen.

Wann immer Sie eine Netzwerktransaktion durchführen müssen, ist es wichtig, dass Sie alle Best Practices für das Netzwerk von Android befolgen:

  • Verwenden Sie HTTPS anstelle von HTTP, wenn dies auf dem Server unterstützt wird.
  • Vertrauen Sie niemals Daten, die von unsicheren Protokollen heruntergeladen wurden, einschließlich Antworten auf HTTP.
  • Verwenden Sie geeignete Protokolle für vertrauliche Daten, z. B. HttpsURLConnection.
  • Wenn eine Authentifizierung möglich ist, verwenden Sie einen Android-IPC-Mechanismus, z. B. einen Dienst.
  • Verwenden Sie das Open-Source-Netzwerksicherheitstool Nogotofail, um Ihre App auf bekannte TLS / SSL-Schwachstellen und Fehlkonfigurationen zu testen. Nogotofail enthält Tests für häufige Probleme bei der SSL-Zertifikatsüberprüfung, bei HTTPS- und TLS / SSL-Bibliotheksfehlern, bei Klartextproblemen sowie bei SSL- und STARTTLS-Löschproblemen. Weitere Informationen finden Sie auf der GitHub-Seite von Nogotofail.
  • Vermeiden Sie nach Möglichkeit, Code von außerhalb Ihres APK zu laden, da dies die Wahrscheinlichkeit erhöht, dass jemand im Netzwerk Ihren Code während der Übertragung ändert.

Verwenden Sie WebViews mit Vorsicht

Die WebView-Komponente kann HTML und JavaScript verwenden. Wenn Sie WebViews also falsch verwenden, ist Ihre Anwendung anfällig für allgemeine Web-Sicherheitsprobleme, z. B. Cross-Site-Scripting.

Wenn Sie WebViews nicht ordnungsgemäß verwenden, ist Ihre Anwendung für allgemeine Web-Sicherheitsprobleme anfällig.

Um die Sicherheit von Android-Benutzern zu gewährleisten, führt die WebView-Komponente standardmäßig kein JavaScript aus. Bei Bedarf können Sie jedoch JavaScript aktivieren, indem Sie mit getSettings () WebSettings abrufen und anschließend die Methode setJavaScriptEnabled () ausführen:

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

Auch wenn Sie JavaScript aktivieren müssen, sollten Sie die Verwendung von addJavaScriptInterface () nach Möglichkeit vermeiden, da diese Methode das bereitgestellte Java-Objekt in die WebView-Komponente einfügt. Wenn Ihre App auf einem Gerät installiert ist, auf dem Android 4.2 oder früher ausgeführt wird, kann JavaScript möglicherweise Ihre Anwendung manipulieren.

Wenn Sie WebViews verwenden, sollten Sie den Benutzern nicht erlauben, zu einer Website zu navigieren, die Sie nicht kontrollieren, insbesondere sollten Sie dies jedoch tun noch nie Verwenden Sie die Methode addJavascriptInterface (), wenn der Benutzer möglicherweise zu einer nicht vertrauenswürdigen Webseite navigieren könnte, da dies ein großes Sicherheitsrisiko für die Android-App darstellt.

Sie sollten die Methode addJavascriptInterface () niemals verwenden, wenn der Benutzer möglicherweise zu einer nicht vertrauenswürdigen Webseite navigieren könnte.

Wenn Ihre WebView-Komponente auf persönliche Daten zugreift, möchten Sie möglicherweise regelmäßig alle lokal gespeicherten Dateien mithilfe der clearCache () -Methode löschen. Alternativ können Sie verhindern, dass Ihre App vertrauliche Inhalte mithilfe des serverseitigen Headers ohne Cache zwischenspeichert.

Verwalten Sie den Secure Sockets Layer (SSL) Ihrer App

SSL ist eine häufige Komponente der verschlüsselten Kommunikation zwischen Clients und Servern. Wenn Ihre App SSL nicht ordnungsgemäß verwendet, können böswillige Dritte möglicherweise die Daten Ihrer Anwendung abfangen, während sie über ein Netzwerk übertragen werden.

In der Regel wird ein Server mit einem Zertifikat konfiguriert, das einen öffentlichen Schlüssel und einen passenden privaten Schlüssel enthält. Im Rahmen der Kommunikation zwischen dem SSL-Client und dem Server signiert der Server sein Zertifikat mit Public-Key-Kryptografie. Es ist jedoch möglich, dass ein Dritter ein eigenes Zertifikat und einen eigenen privaten Schlüssel generiert. Daher sollte Ihr Client auch über ein oder mehrere vertrauenswürdige Zertifikate verfügen. Wenn kein Zertifikat festgelegt ist, sollte Ihre Anwendung dem Server nicht vertrauen.

Um diesen Prozess zu vereinfachen, werden Server häufig mit Zertifikaten von bekannten Zertifizierungsstellen (Certificate Authorities, CAs) konfiguriert. Ab API-Level 17 unterstützt Android über 100 Zertifizierungsstellen, die mit jeder Version aktualisiert werden. Wenn Sie ein Zertifikat für einen Server ausstellen, signiert die Zertifizierungsstelle das Serverzertifikat mit ihrem privaten Schlüssel. Der Client kann dann überprüfen, ob das Zertifikat von einer Zertifizierungsstelle ausgestellt wurde, die der Android-Plattform bekannt und vertrauenswürdig ist.

Wenn Ihre App mit einem Webserver kommuniziert, der über ein Zertifikat verfügt, das von einer vertrauenswürdigen Zertifizierungsstelle ausgestellt wurde, können Sie Ihre Anfrage in wenigen Codezeilen stellen:

URL url = neue URL ("https://www.google.com"); HttpsURLConnection urlConnection = (HttpsURLConnection) url.openConnection (); urlConnection.connect (); InputStream in = urlConnection.getInputStream ();

Es gibt jedoch einige Szenarien, in denen der obige Code zu einer Ausnahme führt:

  • Die Zertifizierungsstelle, die das Serverzertifikat ausgestellt hat, ist unbekannt. In diesem Szenario können Sie HttpsURLConnection beibringen, dieser Gruppe von Zertifizierungsstellen zu vertrauen.
  • Das Serverzertifikat war selbstsigniert, was bedeutet, dass der Server als eigene Zertifizierungsstelle fungiert. Für selbstsignierte Zertifikate können Sie Ihren eigenen TrustManager erstellen. Sie müssen jedoch sicherstellen, dass Ihr selbstsigniertes Zertifikat über einen starken Schlüssel verfügt.
  • In der Serverkonfiguration fehlt eine Zwischenzertifizierungsstelle. Viele öffentliche Zertifizierungsstellen signieren Serverzertifikate nicht direkt. Android vertraut nur Stammzertifizierungsstellen, daher muss der Server eine Kette von Zertifikaten von der Server-Zertifizierungsstelle über alle erforderlichen Intermediate senden, um die Stammzertifizierungsstelle zu erreichen. Wenn Sie den Server nicht so konfigurieren können, dass die Zwischenzertifizierungsstelle in die Serverkette aufgenommen wird, können Sie einen eigenen TrustManager erstellen.

Erstellen einer Netzwerksicherheitskonfigurationsdatei: Vertrauen auf benutzerdefinierte Zertifizierungsstellen

Wenn Ihre App eine neue oder benutzerdefinierte Zertifizierungsstelle verwenden soll, sollten Sie eine Netzwerksicherheitskonfigurationsdatei erstellen, in der Sie Ihre Netzwerksicherheitseinstellungen angeben.

So erstellen Sie eine Netzwerksicherheitskonfigurationsdatei:

  • Wenn Ihr Projekt noch keinen XML-Ordner enthält, müssen Sie einen erstellen. Klicken Sie bei gedrückter Ctrl-Taste auf den res-Ordner Ihres Projekts und wählen Sie "Neu"> "Android-Ressourcenverzeichnis".
  • Erstellen Sie eine neue XML-Ressourcendatei in Ihrem XML-Verzeichnis, die als Konfigurationsdatei für die Netzwerksicherheit dient. Ich benenne diese Datei network_config.
  • Öffnen Sie Ihre Netzwerkkonfigurationsdatei und geben Sie an, dass der gesamte Datenverkehr zu den folgenden Domänen HTTPS verwenden soll:

// Klartext deaktivieren // // Diese Regel auf die Domain und alle Subdomains anwenden // my.domain.com ... ... ...

Sie können jetzt die benutzerdefinierten Zertifizierungsstellen angeben, denen Ihre Anwendung vertrauen soll. Wenn Sie beispielsweise eine Verbindung zu einem Host herstellen möchten, der eine selbstsignierte Zertifizierungsstelle verwendet, fügen Sie Ihrer Netzwerksicherheitskonfigurationsdatei Folgendes hinzu:

my.domain.com // Eine Reihe von Vertrauensankern für sichere Verbindungen // // Eine Reihe von Zertifikaten für Trust-Anchors-Elemente und die Quelle dieser Zertifikate //

Vergessen Sie nicht, die Konfigurationsdatei für die Netzwerksicherheit in Ihrem Manifest zu deklarieren:

Anschließend müssen Sie die vertrauenswürdigen Zertifizierungsstellen im PEM- oder DER-Format zu res / raw / trusted_cas Ihres Projekts hinzufügen.

Vertrauen Sie gegebenenfalls zusätzlichen Zertifizierungsstellen

Schließlich möchten Sie möglicherweise zusätzlichen Zertifizierungsstellen vertrauen, die der Android-Plattform nicht bekannt sind. Um die Anzahl der Zertifizierungsstellen zu erhöhen, denen Ihre Anwendung vertraut, müssen Sie mehrere Zertifikatquellen angeben:

Senden Sie niemals sensible Daten per SMS

Wenn Sie Daten von einem Server an Ihre Anwendung übertragen müssen, sollten Sie Google Cloud Messaging (GCM) und IP-Messaging verwenden und niemals das unverschlüsselte SMS-Protokoll.

Lesen Sie auch: Android-Entwicklung: So tätigen Sie Anrufe, empfangen SMS und rufen die Kontakte der Benutzer ab

Sie sollten auch niemals vertrauliche Befehle mit SMS ausführen, da SMS als Broadcast-Absichten übertragen werden. Dies bedeutet, dass jede Anwendung mit der READ_SMS-Berechtigung auf ihren Inhalt zugreifen kann.

Schützen Sie sich mit den SafetyNet-APIs vor Sicherheitsbedrohungen

SafetyNet bietet eine Reihe von Diensten und APIs, mit denen Sie Ihre App vor Sicherheitsbedrohungen wie Gerätemanipulationen, böswilligen URLs und gefälschten Benutzern schützen können.

Android unterstützt die folgenden SafetyNet-APIs:

  • SafetyNet Attestation API. Mit dieser Anti-Missbrauch-API können Sie auf das Android-Gerät zugreifen, auf dem Ihre Anwendung ausgeführt wird. So können Sie feststellen, ob Ihre Server mit einem Originalgerät interagieren.
  • SafetyNet Safe Browsing API. Mithilfe dieser API können Sie feststellen, ob Google eine bestimmte URL als bekannte Bedrohung eingestuft hat.
  • SafetyNet reCAPTCHA API. Dieser Service enthält eine reCAPTCHA-API, mit der Sie Ihre App vor Bedrohungen wie Spam und böswilligem Datenverkehr schützen können. Wenn die API den Verdacht hat, dass Ihre App mit einem Bot interagiert, wird ein CAPTCHA bereitgestellt, das der Empfänger lösen muss, bevor er Ihre App weiter verwenden kann.
  • SafetyNet Verify Apps API. Wenn Ihre App vertrauliche Benutzerdaten enthält, können Sie mit dieser API mit der Funktion "Apps überprüfen" des Geräts interagieren und prüfen, ob das Gerät frei von schädlichen Anwendungen ist. Wenn das Gerät nicht sicher ist, können Sie einige Schadensbegrenzungen vornehmen, indem Sie alle sensiblen Funktionen Ihrer App deaktivieren. Beachten Sie jedoch, dass SafetyNet Benutzer zwar auf potenziell schädliche Apps hinweist, jedoch nicht garantiert, dass der Benutzer diese Apps tatsächlich deinstalliert. Darüber hinaus werden ständig bösartige Apps veröffentlicht, und Hacker haben immer wieder neue und raffinierte Methoden entwickelt, um unter das Radar zu geraten. Selbst wenn ein Gerät den SafetyNet-Test besteht, sollten Sie nicht davon ausgehen, dass es keine schädlichen Apps gibt das Gerät.

Weitere Informationen zu den SafetyNet-APIs, einschließlich Anweisungen zu deren Verwendung in Ihren Apps, finden Sie in den offiziellen Android-Dokumenten.

Verwenden Sie Android Protected Confirmation für vertrauliche Transaktionen

Wenn Ihre App eine vertrauliche Transaktion ausführen muss, z. B. eine Zahlung, können Sie Android Protected Confirmation auf Geräten mit Android 9 (API-Stufe 28) oder höher verwenden.

Jedes Mal, wenn der Benutzer versucht, eine vertrauliche Transaktion abzuschließen, wird in Android Protected Confirmation eine Aufforderung angezeigt, eine kurze Erklärung zu akzeptieren. Wenn der Benutzer dieser Anweisung zustimmt, können Sie sie mit einem Schlüssel aus dem Android Keystore signieren.

Weitere Informationen sowie Anweisungen zum Implementieren von Android Protected Confirmation finden Sie in den offiziellen Android-Dokumenten.

Android 10: Führen Sie eingebetteten DEX-Code direkt aus

Auf Geräten mit Android 10 (API-Stufe 29) und höher kann eingebetteter DEX-Code direkt aus der APK-Datei Ihrer App ausgeführt werden. Dies kann dazu beitragen, einen Angriff zu verhindern, selbst wenn der Hacker den lokal kompilierten Code des Geräts manipuliert.

Lesen Sie auch: Erkunden von Android F: Hinzufügen von Bubble-Benachrichtigungen zu Ihrer App

Öffnen Sie zum Aktivieren dieser neuen Sicherheitsfunktion das Manifest Ihres Projekts und fügen Sie dem Element Folgendes hinzu:

Als Nächstes müssen Sie eine APK-Datei erstellen, die nicht komprimierten DEX-Code enthält, auf den ART direkt zugreifen kann. Öffnen Sie Ihre build.gradle-Datei und fügen Sie Folgendes hinzu:

aaptOptions {noCompress dex}

Beachten Sie jedoch, dass ART beim Start Ihrer App den JIT-Compiler verwendet, was sich auf die Leistung Ihrer Anwendung auswirken kann.

Einpacken

In diesem Artikel werden alle bewährten Methoden, Tools, APIs und Techniken behandelt, die Sie zur Aufrechterhaltung der Sicherheit Ihrer Android-App verwenden können.

Haben Sie Ratschläge zur Erhöhung der Sicherheit Ihrer Anwendung? Stellen Sie sicher, dass Sie Ihre Tipps in den Kommentaren unten teilen!

Google hopping it ein prakticher Weg, um den beten Prei für Artikel au verchiedenen Gechäften zu finden, aber der uchriee hat bechloen, ihm einen neuen Antrich und ein paar praktiche Werkzeu...

Anfang de Jahre gab Google bekannt, da Google Expre umbenannt werden oll, um einen univerellen Einkaufdient für alle Google-Produkte bereitzutellen. Jetzt it da Rebranding offiziell gechehen, und...

Suchen