App mit Datenbankanbindung

E

EmmZett

Neues Mitglied
0
Hallo zusammen,

ich bin Anfänger bei der App-Entwicklung. Ich versuche gerade ein App zu programmieren, dass Adressen aus einer MySQL Datenbank ausliest.
Das ganze mache ich, indem ich ein PHP-Skript aufrufe, welches dann auf die Datenbank zugreift und mir die Daten als JSON-Array bereitstellt.
Das ganze funktioniert auch problemlos.

Da ich immer versuche alles zu optimieren, habe ich mich jetzt gefragt ob diese Methode sinnvoll/effizient ist? Kann dazu jemand was sagen?

Inbesondere beschäftigen mich folgende Punkte:
- angenommen das App wird von vielen Personen gleichzeigtig benutzt, kann es dann sein, dass das PHP-Skript "überlastet" wird? (Ich habe gelesen, dass für solche Zwecke ein Webservice sinnvoll ist, beim Weiterlesen hab ich dann festgestellt, dass solch ein PHP-Skript eig. ein Webservice ist?!?!)
- Wie sieht es mit der Sicherheit aus? In dem PHP-Skript sind die Zugangsdaten zur Datenbank gespeichert, kann man die auslesen, da das Skript schließlich von außen auf einem Webserver liegt?
- Da das Skript eben auf einem Websever liegt und über jeden Browser erreichbar ist, kann man es auch damit auslesen. Besteht eine Möglichkeit dies zu unterbinden, so dass man nur mit dem App darauf zugreifen kann?

Ich hoffe ich konnte mein Anliegen einigermaßen verständlich rüberbringen.
Schonmal danke und besten Gruß!
 
EmmZett schrieb:
Da ich immer versuche alles zu optimieren, habe ich mich jetzt gefragt ob diese Methode sinnvoll/effizient ist? Kann dazu jemand was sagen?
Genau so solltest du es machen!
- angenommen das App wird von vielen Personen gleichzeigtig benutzt, kann es dann sein, dass das PHP-Skript "überlastet" wird? (Ich habe gelesen, dass für solche Zwecke ein Webservice sinnvoll ist, beim Weiterlesen hab ich dann festgestellt, dass solch ein PHP-Skript eig. ein Webservice ist?!?!)
Ähem ja, das PHP Script ist der Webservice :thumbup:
Das Script wird nicht überlastet, höchstens der Webserver auf dem es liegt. Bei einem vernünftigen Hoster sollte das aber kein Problem sein.
- Wie sieht es mit der Sicherheit aus? In dem PHP-Skript sind die Zugangsdaten zur Datenbank gespeichert, kann man die auslesen, da das Skript schließlich von außen auf einem Webserver liegt?
Nein, die kann man nicht auslesen, das Script gibt nur das aus, was du mittels echo, print oder dergleichen ausgibtst.
- Da das Skript eben auf einem Websever liegt und über jeden Browser erreichbar ist, kann man es auch damit auslesen. Besteht eine Möglichkeit dies zu unterbinden, so dass man nur mit dem App darauf zugreifen kann?
Möglich ist alles. Du kannst zb. beim zugriff auf den Webservice bestimmte Parameter übergeben und je nach vorhandensein dieser Daten ausgeben oder nicht.
Eleganter ist es, wenn du deiner HTTP Anfrage aus Android einen Custom Header mitgibst, wo du z.B. den User-Agent String deinen wünschen anpasst.
Mit dem DefaultHttpClient geht das zb so:
Code:
HttpClient client = new DefaultHttpClient();
HttpParams httpParameters = client.getParams();
HttpConnectionParams.setConnectionTimeout (httpParameters, 5000);
HttpConnectionParams.setSoTimeout (httpParameters, 5000);
String Uri = "https://meineseite.com/tollerWebService.php";	
HttpGet httpGet = new HttpGet(Uri);
httpGet.setHeader("User-Agent", "MySpecialAndroidAppService");
Im PHP Script kannst du mit
Code:
if (strpos($_SERVER['HTTP_USER_AGENT'], 'MySpecialAndroidAppService') !== FALSE) {
    doSomethingCool();
}
MfG
 
Die Zugangsdaten haben in der aufgerufenen php-Datei nichts verloren.da braucht nur mal der php Interpreter ausfallen und jeder hat die Zugangsdaten.
Passwörter gehören grundsätzlich in eine include Datei, natürlich auch mir der Endung.php und möglichst außerhalb des von außen zugänglichen Bereichs.

Gesendet von meinem GT-I9100 mit Tapatalk
 
erstmal danke für die Antworten!

Sentence schrieb:
Möglich ist alles. Du kannst zb. beim zugriff auf den Webservice bestimmte Parameter übergeben und je nach vorhandensein dieser Daten ausgeben oder nicht.
Eleganter ist es, wenn du deiner HTTP Anfrage aus Android einen Custom Header mitgibst, wo du z.B. den User-Agent String deinen wünschen anpasst.
Mit dem DefaultHttpClient geht das zb so:
Code:
HttpClient client = new DefaultHttpClient();
HttpParams httpParameters = client.getParams();
HttpConnectionParams.setConnectionTimeout (httpParameters, 5000);
HttpConnectionParams.setSoTimeout (httpParameters, 5000);
String Uri = "https://meineseite.com/tollerWebService.php";    
HttpGet httpGet = new HttpGet(Uri);
httpGet.setHeader("User-Agent", "MySpecialAndroidAppService");
Im PHP Script kannst du mit
Code:
if (strpos($_SERVER['HTTP_USER_AGENT'], 'MySpecialAndroidAppService') !== FALSE) {
    doSomethingCool();
}
MfG
Wenn ich das richtig verstanden habe, ist das sozusagen eine Abfrage nach Logininformationen die ich vorher festlege und in dem "User-Agent-String" speichere, korrekt?

cp2306 schrieb:
Die Zugangsdaten haben in der aufgerufenen php-Datei nichts verloren.da braucht nur mal der php Interpreter ausfallen und jeder hat die Zugangsdaten.
Passwörter gehören grundsätzlich in eine include Datei, natürlich auch mir der Endung.php und möglichst außerhalb des von außen zugänglichen Bereichs.

Dann greift das eig. PHP-Skript auf die include-Datei zu (welche in einerm sicheren Bereich des Webservers liegt) und holt sich daraus die Anmeldedaten für die Datenbank?
 
EmmZett schrieb:
Wenn ich das richtig verstanden habe, ist das sozusagen eine Abfrage nach Logininformationen die ich vorher festlege und in dem "User-Agent-String" speichere, korrekt?
Logininformationen würde ich das nicht bezeichen. An sich wird der UserAgent gesetzt und ausgelesen.
Theoretisch könnte man in jedem x-beliebigem Browser den UserAgent ebenso verändern und das somit umgehen (allerdings nur wenn man weiß was man eingeben muss).

Dann greift das eig. PHP-Skript auf die include-Datei zu (welche in einerm sicheren Bereich des Webservers liegt) und holt sich daraus die Anmeldedaten für die Datenbank?
Das ist korrekt.
Es gibt den Serverpfad, das ist bspw /var/www (Providerabhängig).
Dort legst du dann die Include-Datei ab (bspw /var/www/db_config.inc.php).
Die eigentliche Webseite legst du in /var/www/website/
Die Domain/Subdomain leitest du dann ebenfalls auf /var/www/webseite/
Die db_config.inc.php lässt sich von aussen also nicht öffnen.
 

Ähnliche Themen

Manny87
  • Manny87
Antworten
11
Aufrufe
161
swa00
swa00
B
Antworten
4
Aufrufe
472
bb321
B
FabianDev
Antworten
5
Aufrufe
549
swa00
swa00
Zurück
Oben Unten