Absicherung bei Abfrage einer Online-DB (MySQL) über PHP-Skript

  • Antworten:9
Matthias
  • Forum-Beiträge: 181

07.03.2016, 13:51:49 via Website

Hi zusammen,

ich will mit meiner Android App eine MySQL-Datenbank (online) abfragen. Dies geschieht über ein PHP-Skript, welches von der App angesteuert wird. Die JSON-Ausgabe des Skripts landet in einer ListView.

Wie kann ich diese Verbindung absichern, dass nur meine App alleine darauf Zugriff hat?
Die Adresse des PHP-Skriptes lässt sich ja womöglich mittels Reverse Engineering relativ leicht abfragen und dann hätte jeder, der diese Adresse besitzt, Zugriff auf die Daten ... was ich natürlich vermeiden will.

Danke schon mal für die Tipps!

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

07.03.2016, 13:55:23 via App

Hallo Matthias!
Da gibt es mehrere möglichkeiten.
Meist schickt man noch ein ApiKey oder Login mit. Das ist ein Hash wert der aus irgendwelchen Faktoren wie benutzer und passwort generiert wird.
Dein PHP muss dann prüfen ob der Key passt und gibt dann entsprechend was aus.
100% sicher ist das leider auch nicht aber es gibt dir die Sicherheit dass niemand durch das reine Wissen ümer die Url die API benutzen oder Misbrauchen kann.

LG Pascal //It's not a bug, it's a feature. :) ;)

Matthias

Antworten
Matthias
  • Forum-Beiträge: 181

07.03.2016, 13:59:39 via Website

Danke für die schnelle Antwort!

Dieser ApiKey oder Login könnte dann doch aber auch durch Reverse Engineering der APK herausgefunden werden?!

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

07.03.2016, 14:06:53 via App

Genau deswegen meinte ich nicht 100% sicher.
Apk reverse Engeneering ist zwar verboten aber trotzdem.
Wenn du sichergehen willst dass die Verbindung sicher ist müsstest du ein Challenge-Response verfahren nutzen. Wie man das aber Umsetzt hab ich keine Ahnung.

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Matthias
  • Forum-Beiträge: 181

07.03.2016, 14:10:44 via Website

Verboten ja, da hast du Recht. Die Frage ist nur, wie man das nachweist (thinking).

Ich sag mal so: Es sind jetzt keine 100% kritische Daten... ich will nur nicht, dass sie von außerhalb der App abgegriffen werden können. (laughing)

Antworten
Matthias
  • Forum-Beiträge: 181

07.03.2016, 14:53:39 via Website

Ja, ich denke das macht Sinn!
Obwohl ich vermeiden wollte, dass man zwingend ein Nutzerkonto anlegen muss, um die Inhalte der App zu nutzen.
Aber ich denke, es führt wohl kein Weg daran vorbei ...

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

07.03.2016, 16:33:49 via App

Musst ja nicht zwingend eines anlegen.
Danns schränkst du es halt ein.
User ohne login dürfen dann halt weniger als mit.

— geändert am 07.03.2016, 16:33:58

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Matthias
  • Forum-Beiträge: 181

08.03.2016, 08:02:33 via Website

Pascal P.

Danns schränkst du es halt ein.
User ohne login dürfen dann halt weniger als mit.

Ohne Login wäre die App dann nicht nutzbar ;-). Macht aber nichts ... ein Login macht so oder so Sinn, da viele Funktionen benutzergebunden sind.

Antworten
Gelöschter Account
  • Forum-Beiträge: 21.034

08.03.2016, 08:33:36 via Website

Zunächst sollte die DB so konzipiert sein, dass Schreibzugriffe nicht nötig sind.

Rechte des Users auf das absolut notwendige Maß beschränken.

Zwingenden TLS-Layer für die Connection einrichten.

API-Key dynamisch gestalten. Zum Beispiel aus dem Timestamp generiert und zusätzlich salzen.

Ein simpler Timestamp ist Mist. Laufen die Uhren von Server und Client nur eine Sekunde auseinander, geht nichts. Also lieber einen String aus Datumsbestandteilen zusammensetzen. Und vor allem: Mir UTC rechnen, damit ubterschuedliche Zeitzonen nicht zum Problem werden.

Antworten