1. Nimm jetzt an unserem 2. ADVENT-Gewinnspiel teil - Alle Informationen findest Du hier!

App mit Datenbankanbindung

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von EmmZett, 15.03.2012.

  1. EmmZett, 15.03.2012 #1
    EmmZett

    EmmZett Threadstarter Neuer Benutzer

    Beiträge:
    8
    Erhaltene Danke:
    0
    Registriert seit:
    19.10.2011
    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ß!
     
  2. Sentence, 16.03.2012 #2
    Sentence

    Sentence Erfahrener Benutzer

    Beiträge:
    242
    Erhaltene Danke:
    51
    Registriert seit:
    27.01.2011
    Phone:
    S3, S6 Edge
    Genau so solltest du es machen!
    Ä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.
    Nein, die kann man nicht auslesen, das Script gibt nur das aus, was du mittels echo, print oder dergleichen ausgibtst.
    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
     
  3. cp2306, 16.03.2012 #3
    cp2306

    cp2306 Android-Lexikon

    Beiträge:
    1,208
    Erhaltene Danke:
    158
    Registriert seit:
    01.07.2011
    Tablet:
    Samsung Galaxy Tab 3 10.1
    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
     
  4. EmmZett, 16.03.2012 #4
    EmmZett

    EmmZett Threadstarter Neuer Benutzer

    Beiträge:
    8
    Erhaltene Danke:
    0
    Registriert seit:
    19.10.2011
    erstmal danke für die Antworten!

    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?

    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?
     
  5. cp2306, 16.03.2012 #5
    cp2306

    cp2306 Android-Lexikon

    Beiträge:
    1,208
    Erhaltene Danke:
    158
    Registriert seit:
    01.07.2011
    Tablet:
    Samsung Galaxy Tab 3 10.1
    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).

    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.
     

Diese Seite empfehlen