App die mit einem Online Server zusammenarbeitet.

DamianToczek

Gesperrt
Moin,
ich hab eine Frage.
Kann man eine App so erstellen die sich mit einem Server verbindet und eine Seite (html,php) anzeigt?
Der Server wäre UNERREICHBAR außerhalb der App.

Mit Server ist ein Dedizierter oder VPN gemeint.
 
A: Benutze AES
B: Lasse die Anwendung nur zu einem bestimmten Server verbinden

Der Server kann nicht unerreichbar sein wenn du Ihn ueber die Anwendung erreichen kannst.
Man kann den Server an sich erreichbar machen aber den Inhalt dann mit einem Passwort versehen.
Bedeutet: Die App kann an sich einen einmaligen Zugang anlegen der der Server aktzeptieren kann.
 
Was wäre sicherer? Webhosting oder normaler dedizierter Server?
Wenn Du Deinem Hoster vertraust ist vermutlich ein normales Webhosting sicherer (aber eins, das HTTPS unterstützt, was mittlerweile keine Kostenfrage mehr ist).

Was Du in dem Fall mit einer App möchtest, ist mir zwar nicht klar, muss es aber auch nicht. Wenn die App nur per Web-Control die Seite darstellt kann man meist auch gleich eine entsprechende Webseite erstellen und das ganze per Browser darstellen. Damit umgeht man (je nach mobilem System) auch gleich noch den Zwangs-Appstore (iOS ohne Rooting) und kann die App auf unterschiedlichen Systemen nutzen. Dafür ist sie halt meist nicht zu 100% an exakt ein System angepasst.
 
Kann man eine App so erstellen die sich mit einem Server verbindet und eine Seite (html,php) anzeigt?
Der Server wäre UNERREICHBAR außerhalb der App.
Kurz und Knapp ja! Allerdings muss man hier etwas differenzieren. Wie schon geschrieben wurde, muss der Server grundsätzlich immer erreichbar sein. Das was du meinst ist, das die Ressource, die von der App angefordert wird, nicht außerhalb dieser App zur Verfügung steht. Das ist erst einmal generell problemlos zu machen. Allerdings darfst du niemals vergessen, das HTTP ein komplett Zeichenkettenlastiges Protokoll ist. Damit sich eine App sicher an einem Webserver Authetifizieren kann, benötigst du definitiv eine sichere HTTPS-Verbindung, um den Datenverkehr zwischen App und Server zu verschlüsseln. Es ist zu tausenden schon bewiesen, das eine unverschlüsselte Verbindung z.B. in einem WLAN recht einfach mitzuschneiden ist. Authentifizierungsschlüssel wären damit für versierte leicht zu finden.

Die Realisierung für eine solche "Sperre" kann sich die API's bekannter Webdienste zum Vorbild nehmen. Egal ob Google oder andere Dienstanbieter. Realisiert wird die Authentifizierung über API-Key's. Dabei handelt es sich um eine oder mehrere Zeichenketten, die an der richtigen Stelle vom serverseitigen Skript erwartet und ausgewertet werden, um dann bei Erfolg die Ressource freizugeben. Soll diese Ressource nur z.B. in einer Firma den Mitarbeitern zur Verfügung stehen, so ist natürlich zusätzlich anzuraten, neben dem API-Key auch noch Benutzername und Passwort abzufragen und innerhalb der App einen zusätzlichen Schlüssel für eine Session abzulagen.

Da du mit dem HTTP(S)-Protokoll arbeiten möchtest, musst du auf der Serverseite mit den Requests und dem Login genauso umgehen wie bei einer normalen Webanwendung. Nur eben mit einem zusätzlichen Parameter, der dem Server sagt, das es die App ist. Ich würde zum Beispiel den API-Key als Useragent an die Webanwendung senden. Ich würde für den Session-Schlüssel (und wenn ich es machen würde noch einen weiteren Schlüssel) ganz normal über die Cookies abarbeiten. Die Request-Bodies hingegen bleiben dann wie gewohnt für die Kommunikation frei.

Ebenfalls (und es kotzt mich regelrecht an, das es die meisten Webentwickler serverseitig nicht tun!) unbedingt daran denken, auch einen passenden HTTP-Statuscode zurückzuliefern. Also bei fehlenden Login-Daten 401 und bei falschem API-Key/Useragent die 403 ODER 400, obwohl der 400er eher für andere schlimmere Fälle da ist! Eine kleine Auflistung dazu: HTTP/Statuscodes – SELFHTML-Wiki oder HTTP-Statuscode – Wikipedia
Es gibt genug Tools und Bots, die anfangen, einen Webserver zu crawlen um Lücken zu finden. Nichts ist schlimmer als wenn eine geschützte Ressource trotz falscher Daten automatisch den Code 200 "Alles Super!" sendet. Das ist förmlich eine Einladung, sich den Quark näher anzusehen. Außerdem ignorieren Suchmaschinen Webseiten mit Fehlercodes. Sie können ja schlecht etwas indexieren, worauf man keinen Zugriff hat. Darum musst du dich also auch nicht kümmern.

Mit Server ist ein Dedizierter oder VPN gemeint.
Da du eh mit PHP arbeitest hängt der einzusezende Server natürlich davon ab, wieviel man an Ressourcen brauch. Wenn diese Ressource nur 100 mal die Minute aufgerufen wird, solltest du mit einem Webhosting-Paket hinkommen. Bei mehr Anfragen sollte man über einen vServer nachdenken. Ein Rootserver (Dedicated Server) wird eigentlich nur in den aller seltensten Fällen für ein einziges Projekt benötigt. Aber egal, was du nutzt. Denke an HTTPS. Solltest du zwischen dem Client und dem Server eine verschlüsselte VPN-Verbindung haben, dann kannste dir das zusätzliche Verschlüsseln über HTTPS natürlich sparen. Wenn richtig konfiguriert komtm man an den Webserver dann ja eh nur über den Tunnel dran.
 
Zurück