Java MySQL-DB in Android App?

Dsimon24

Lieutenant
Registriert
Aug. 2016
Beiträge
595
Hallo zusammen,

ich weiß, dass es zu meiner Frage schon sehr viele Antworten gibt.
Dennoch erhoffe ich mir hier eine Antwort, auf die man sich eher verlassen kann,
als die 100te, verschiedene Lösungswege, die es im Netz zu finden gibt.

Ich möchte eine kleine App für Android entwickeln, dessen Daten von einer MySQL-DB
aus dem Internet bezogen werden sollen. Nun sollte diese Sache möglichst sicher sein
und es sollte kein Sicherheitsproblem auftauchen. Wie kann ich am besten bei der
Entwicklung einer Android-App auf eine MySQL-DB zugreifen? Woraus muss
ich in Bezug auf Sicherheit möglichst achten?

VG, David
 
Hi,

einen Controller auf einem Server, der die Anfragen entgegennimmt und sich mit der DB verbindet, verschlüsselte Verbindung, Authorisierung und Authentifizierung der Anfragen, ggf. Blocken und dann von der App aus Anfragen an den Controller stellen.

VG,
Mad
 
Also du musst den Transport verschlüsseln: TLS ("SSL").
Du musst den Transport schützen (also dass niemand dein Server angreift): Server-Side-Validation => z.B. mit PHP/Ruby/… + nginx/Apache

=> ergo: Bau ne Webseite, die die Daten mittels SOAP (z.B.) ausliefert.

Deine App sollte genau das gleiche machen: Nur deine Webseite zulassen (Certificate pinning z.B. oder gleich ein Letsencrypt), Daten validieren, … halt wie bei ner Webseite auch.
 
Anders ausgedrückt: Erstell ne API, die dein Client abfragt.
 
Ja, da muss eine API her.
REST API oder SOAP API. Eigentlich nimmt man heutzutage dafür eher eine REST API. JWT bietet sich dabei dann als Lösung für die Autorisierung und Authentifizierungs-Token an. Anstelle eines API Key (hardcodiert ist ein API Key ein absolutes NoGo in einer App). Wenn SOAP, dann SAML für die Autorisierung und Authentifizierung.

Letztlich brauchst du zwei Webservices: Ein Authentifizierungsdienst und die API für die Datenbank. Der Auth-Dienst stellt gültige Anmeldetoken aus (Anmeldung der User an deiner APP via User/Password oder ohne Anmeldung?), die API kommuniziert nur mit Clients mit validen Token. Da die Validierung der Token bei JWT und SAML sehr unterschiedlich sind, müsstest du dir einfach mal beide Verfahren anschauen und dann entscheiden, was dir lieber ist.

Mein Favorit wäre ganz klar REST mit JWT. Habe aber auch schon SOAP mit SAML gebaut. Letzteres empfand ich als recht kompliziert im Vergleich zum JWT - habe mit Java aber nicht so viel am Hut. In Java ist SOAP mit SAML recht stark vertreten, da das ganze ja ursprünglich aus der Java Ecke kommt. JWT gibt es aber auch reichlich für Java und viele andere Sprachen. Siehe: https://jwt.io

Den Webdienst an sich dann, wie hier schon erwähnt, via TLS absichern und mit HTTP Public Key Pinning (HPKP) so absichern, dass niemand das Zertifikat einfach austauschen kann (MITM). Siehe: https://www.owasp.org/index.php/Certificate_and_Public_Key_Pinning
 
  • Gefällt mir
Reaktionen: DubZ und r15ch13
Zurück
Oben