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

Fonsi

Fonsi

Fortgeschrittenes Mitglied
16
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!
 
Reverse Engineering ist zu viel der Mühe. Es geht wesentlich einfacher. Man braucht nur die Internetverbindung mit den Server mitschneiden. Dort stehen auch die URL's und die übermittelten Daten.

Wenn du eine wirklich sichere Verbindung brauchst, muss du notgedrungen mit Passwörter und Verschlüsselung arbeiten.

Damit bei einer offenen Verbindung niemand Schindluder mit der Datenbank treibt, solltest du sie gegen SQL-Injection absichern. Dabei gilt, es gibt keine totale Sicherheit, aber man kann die Zeit, die es braucht, um die Hürden zu umgehen, erhöhen.

SQL-Injection – Wikipedia
 
Und wie wäre es mit einer AES-Verschlüsselung ? - Reverse würde nur den Link ans Tageslicht führen ...
 
AES ist eine symmetrische Verschlüsselung. D.h es wird nur ein Schlüssel verwendet. Deshalb man muss den Schlüssel entweder eingeben (z.B als Lizenz). Oder aber im Smartphone hinterlegen. Und dann sind wir wieder beim Reverse Engineering. Und jeder Code, den eine CPU lesen kann, kann auch ein Mensch lesen. :)

Ganz so einfach ist es dann doch nicht.
 
Hallo Markus, fast , aber nicht ganz :)

a) Richtig : Passwort auf Device - aber dann müsste ich schon das Device physisch in der Hand halten, denn dort wäre es wieder verschlüsselt in den prefs
b) Das Passwort beim Registieren auch Verschlüsselt JE USER in der DB einmalig - auch als AES - hinterlegen und dann bei einem Request ein compare drauf - , erst dann weitermachen.

Nachtrag :
Und wenn man auf Serverseite noch ein bischen mehr Sicherheit haben mag :
einen Deamon (C/C++) mit Fork Socket und da im binary den Verschlüsselungsprocess vornehmen

Vorteil : Man kann dann noch als Bonbon eine eigene Verschlüsselung oben drauf setzen .

Alle Techniken erhöhen die Sicherheit , aber wenn jemand wirklich mit Elan will , dann macht er sich auch die Mühe ....
An einem bestimmten Punkt muss man sich aber selbst als Entwickler sagen : jetzt ist mal genug des Guten willens :
Der TE schiebt ja keine Regierungsgeheimnisse durch die Gegend .

Ein Tip noch am Rande für den TE : Solange man Userinformation , Bilder , Daten, Chats etc auf einem öffentlichen Server sichert, ist man natürlich auch in der Pflicht, bei einer rechtlichen Verfügung diese Daten herauszurücken . Gerade in der heutigen Zeit gibt es solche Verfügungen immer mehr ... und dann ist das Ganze mit viel Ärger und Aufwand verbunden.
(Das aber nicht um dem TE Angst zu machen, sondern nur um als Gedankengang mit an die Hand zu geben)

Ich hoffe unsere "Diskussion" hilft dem TE ein bisschen weiter
 
Zuletzt bearbeitet:
Zu a) Kein Problem, schon gemacht. :) Das ist eine der einfacheren Übungen. Daten aus den internen Speicher lese ich in meinen Handy regelmäßig aus (Für was gibt es root).
Außerdem müssen die Daten erst mal in die Prefs. Also als Passwort eingeben, oder im Code hinterlegen. ;)
Und wenn ich das Problem richtig verstanden haben, will er nicht mit Passwörtern arbeiten. Was heißt, er muss die Schnittstelle zur Datenbank absichern, damit niemand mit der Datenbank Unfug treibt.
Eine andere Möglichkeit wäre den Speicher direkt auszulesen, und dort den Schlüssel extrahieren. Auch nicht wirklich schwer.

b) Da ist ein grober Denkfehler. Das Passwort muss verschlüsselt werden. Also muss irgendwo der Schlüssel dafür hinterlegt werden. Und wir sind wieder am Anfang des Problems. AES hat so seine Tücken. Symmetrische Verschlüsselungen habe eben eine fundamentale Schwachstelle. Es gibt nur einen Schlüssel für Verschlüsselung und Entschlüsselung.


Zum Nachtrag:
Ein Kindprozess in den Hintergrund zuschieben macht eine Internetverbindung nicht wirklich sicher, außer das die Verschlüsselung ein bisschen schneller funktioniert. In diesem Fall ist aber eher die AES-Verschlüsselung auf dem Smartphone das bremsende Element.
 
Coole Diskussion :)

Zu B: dann müsste man wiederum ans PHP ran - richtig = Schwachstelle - deshalb habe ich den Daemon erwähnt, dann müsste man da auch ein recomplie durchführen ..

Du hast ja so schön ganz oben geschrieben : Es gibt keine absolute Sicherheit, man kann es den bösen Jungs nur schwerer machen

Zu deinem Nachtrag : Was meintest du mit "bremsend " - Die rechenoperation ? die würde er ja nur einmalig beim einloggen vornehmen oder bin ich jetzt auf der schiefen Bahn ?? :)
 
Nachtrag:

Die größte Schwachstelle bei einem Sicherheitskonzept ist meist der Mensch. Entweder der Entwickler der aus Zeitnot, Bequemlichkeit oder Unkenntnis die vorhanden Sicherheitskonzepte nicht umsetzt.
Aber auch schwache Passwörter, uralte Software auf den Server, aufgeblähte Software sind Eintrittstore.
 

Ähnliche Themen

B
Antworten
0
Aufrufe
693
basementmedia
B
B
Antworten
3
Aufrufe
1.314
swa00
swa00
D
  • Data2006
Antworten
14
Aufrufe
574
jogimuc
J
Zurück
Oben Unten