Vernetzung
Netzwerktransaktionen sind von Natur aus mit Sicherheitsrisiken verbunden, da sie die Übertragung von Daten beinhalten, die für den Benutzer potenziell privat sind. Die Menschen sind sich zunehmend der Datenschutzbedenken eines mobilen Geräts bewusst, insbesondere wenn das Gerät Netzwerktransaktionen ausführt. Daher ist es sehr wichtig, dass Ihre App alle Best Practices umsetzt, um die Daten des Benutzers jederzeit zu schützen.
IP-Netzwerk
Die Vernetzung unter Android unterscheidet sich nicht wesentlich von anderen Linux-Umgebungen. Die wichtigste Überlegung besteht darin, sicherzustellen, dass geeignete Protokolle für sensible Daten verwendet werden, wie z. B. HttpsURLConnection für sicheren Webverkehr. Verwenden Sie HTTPS über HTTP überall dort, wo HTTPS auf dem Server unterstützt wird, da mobile Geräte häufig eine Verbindung über Netzwerke herstellen, die nicht gesichert sind, wie z. B. öffentliche WLAN-Hotspots.
Mit der SSLSocket-Klasse kann eine authentifizierte, verschlüsselte Kommunikation auf Socket-Ebene einfach implementiert werden. Angesichts der Häufigkeit, mit der Android-Geräte über WLAN eine Verbindung zu ungesicherten drahtlosen Netzwerken herstellen, wird die Verwendung sicherer Netzwerke für alle Anwendungen, die über das Netzwerk kommunizieren, dringend empfohlen.
Einige Anwendungen verwenden Localhost-Netzwerkports für die Verarbeitung sensibler IPC. Verwenden Sie diesen Ansatz nicht, da andere Anwendungen auf dem Gerät auf diese Schnittstellen zugreifen können. Verwenden Sie stattdessen einen Android-IPC-Mechanismus, bei dem eine Authentifizierung möglich ist, beispielsweise mit einem Dienst. Die Bindung an die unspezifische IP-Adresse INADDR_ANY ist schlechter als die Verwendung von Loopback, da Ihre Anwendung dadurch Anfragen von jeder IP-Adresse empfangen kann.
Stellen Sie sicher, dass Sie den von HTTP oder anderen unsicheren Protokollen heruntergeladenen Daten nicht vertrauen. Dazu gehören die Validierung der Eingaben in WebView und alle Antworten auf Absichten, die gegen HTTP ausgegeben werden.
Telefonie-Vernetzung
Das Short Message Service (SMS)-Protokoll wurde in erster Linie für die Kommunikation zwischen Benutzern entwickelt und eignet sich nicht gut für Apps, die Daten übertragen möchten. Aufgrund der Einschränkungen von SMS empfehlen wir die Verwendung von Firebase Cloud Messaging (FCM) und IP-Netzwerken zum Senden von Datennachrichten von einem Webserver an Ihre App auf einem Benutzergerät.
Beachten Sie, dass SMS weder im Netzwerk noch auf dem Gerät verschlüsselt oder stark authentifiziert sind. Insbesondere sollte jeder SMS-Empfänger damit rechnen, dass ein böswilliger Benutzer die SMS an Ihre Anwendung gesendet haben könnte. Verlassen Sie sich bei der Ausführung vertraulicher Befehle nicht auf nicht authentifizierte SMS-Daten. Beachten Sie außerdem, dass SMS im Netzwerk gefälscht und/oder abgefangen werden können. Auf dem Android-Gerät selbst werden SMS-Nachrichten als Broadcast-Intents übertragen, sodass sie von anderen Anwendungen, die über die Berechtigung READ_SMS verfügen, gelesen oder erfasst werden können.