Forum: PC-Programmierung MySQL Datenbank REST App


von Jürgen P. (Gast)


Lesenswert?

Moin,

ich muss zu Beginn sagen das ich noch nie was mit Webapps gemacht habe 
und mich somit nicht wirklich auskenne.
Folgende Problematik:

Ich habe eine Linux Server bei einem Webhoster mit einer MySQL Datenbank 
zur Verfügung.
Ein Mini-Rechner auf dem ein selbst geschriebenes C-Programm läuft soll 
jetzt via Mobilfunknetz die Datenbank abfragen. Die Internetverbindung 
mit dem C Programm habe ich stabil am laufen und kann mich auch zu 
Servern verbinden und Senden und Empfangen.
Da man ja nicht direkt auf eine DB aus dem Internet zugreifen soll wurde 
mir gesagt das man ein Backend (war-Datei) aufsetzen kann das die 
Anfragen aus dem Internet entgegen nimmt und die Datenbank lokal auf dem 
Server anspricht.
Leider weiß ich absolut nicht wie ich das mache.

Alternativ wäre ich auch schon damit zufrieden wenn ich lokal auf meinem 
Rechner eine DB aufsetze und diese dann aus dem Internet mit meinem Mini 
Rechner anfrage. Allerdings würde ich dort genauso eine Webapp benötigen 
um nicht direkt auf die DB zuzugreifen.

Ich habe im Netz einiges gefunden (SpringBoot, RestSQL) aber kann damit 
leider nicht viel anfangen bzw. finde ich keinen Ansatz/Anfang

Vielen Dank für jede noch so hilfreiche Antwort.

LG

von S R (Gast)


Lesenswert?

Jürgen P. schrieb:
> Da man ja nicht direkt auf eine DB aus dem Internet zugreifen soll wurde

Wer behauptet denn sowas?

von Pete K. (pete77)


Lesenswert?

Du könntest auf dem Server ein php-Skript schreiben, welches von einem 
HTTP-get aufgerufen wird und Daten übergibt.
Sicherer wird das wohl nur, wenn der http-get über SSL ausgeführt wird.

von Jürgen P. (Gast)


Lesenswert?

Mein Vorgesetzter mit dem angeblichen Hintergrund, dass ein direkter 
Zugriff nicht einer sicheren Architektur angehört.
Meine Idee war es mich direkt mit der DB zu Verbinden (vorher einen 
neuen Nutzer mit eingeschränkten Rechten erstellen) und dann direkt 
SQL-Befehle zu senden. Leider wurde mir diese Idee so untersagt

von Jürgen P. (Gast)


Lesenswert?

Pete K. schrieb:
> Du könntest auf dem Server ein php-Skript schreiben, welches von
> einem
> HTTP-get aufgerufen wird und Daten übergibt.
> Sicherer wird das wohl nur, wenn der http-get über SSL ausgeführt wird.

ok leider habe ich aber null Ahnung von php. Unter welchen Stichworten 
kann man dazu am besten was bei Google finden?

von Thorsten (Gast)


Lesenswert?

Jürgen P. schrieb:
> ok leider habe ich aber null Ahnung von php. Unter welchen Stichworten
> kann man dazu am besten was bei Google finden?

Im Prinzip hat dein Vorgesetzter schon recht, allerdings ist bei deinem 
Kenntnisstand zum Thema Webservices der direkte Datenbankzugriff 
höchstwahrscheinlich die sicherere Alternative.

Sichere Webservices zu implementieren lernt man nicht durch googln, also 
entweder du hast Zeit dich da intensiv einzuarbeiten, du greifst doch 
direkt auf die Datenbank zu oder lässt die Aufgabe lieber von Jemanden 
mit entsprechenden Kenntnissen erledigen.

von S R (Gast)


Lesenswert?

Jürgen P. schrieb:
> ok leider habe ich aber null Ahnung von php. Unter welchen Stichworten
> kann man dazu am besten was bei Google finden?

Also da wären insgesamt ein paar mehr Infos nicht schlecht...

Was für Abfragen sind es? Immer die gleichen? Nur selects oder auch 
schreibend?


Stichworte:
entweder: php mysqli (die einfachere Lösung)
oder: php PDO (die bessere, etwas kompliziertere Lösung)

bitte nicht mehr die mysql_* Funktionen benutzen, nur mysqli_*

von Jürgen P. (Gast)


Lesenswert?

S R schrieb:
> Jürgen P. schrieb:
>> ok leider habe ich aber null Ahnung von php. Unter welchen Stichworten
>> kann man dazu am besten was bei Google finden?
>
> Also da wären insgesamt ein paar mehr Infos nicht schlecht...
>
> Was für Abfragen sind es? Immer die gleichen? Nur selects oder auch
> schreibend?
>
> Stichworte:
> entweder: php mysqli (die einfachere Lösung)
> oder: php PDO (die bessere, etwas kompliziertere Lösung)
>
> bitte nicht mehr die mysql_* Funktionen benutzen, nur mysqli_*

Es wären nur 3 Befehle. Einmal soll eine Anfrage per Select kommen. Wenn 
diese Erfolgreich validiert wurde dann soll in 2 weitere etwas 
geschrieben werden.

Ok danke ich werde mir dies mal ansehen.

Habe jetzt auch noch eine bestehende Webapp erhalten die auch auf die DB 
zugreift. Dies wird mit JPA gemacht. Ich versuche auch mal dort 
durchzusteigen vielleicht wäre es ja einfacher diese bestehende WebApp 
zu erweitern.

von Thorsten (Gast)


Lesenswert?

JPA = Java Persistence API. Da wirst du mit PHP und mysqli_irgendwas 
nicht weit kommen.

von Jürgen P. (Gast)


Lesenswert?

Thorsten schrieb:
> JPA = Java Persistence API. Da wirst du mit PHP und
> mysqli_irgendwas
> nicht weit kommen.

Sorry ich meinte das ich mir beides separat ansehe und schaue was im 
Bezug auf das Projekt sinnvoller bzw. für mich einfacher ist.

von Thorsten (Gast)


Lesenswert?

Jürgen P. schrieb:
> Sorry ich meinte das ich mir beides separat ansehe und schaue was im
> Bezug auf das Projekt sinnvoller bzw. für mich einfacher ist.

Wenn du dich mit Java(EE) nicht gut auskennst ist PHP sicher die 
einfachere Variante, da ist die Lernkurve deutlich steiler.

von Jürgen P. (Gast)


Lesenswert?

Thorsten schrieb:
> nicht gut auskennst ist PHP sicher die

Mit Java kenne ich mich aus leider nur nicht im Bereich Webapps. Ich 
werde mir am Wochenende mal einiges an Skripten oder Fachliteratur 
besorgen und im Netz suchen.

Danke erstmal :)

von Jan H. (j_hansen)


Lesenswert?

Zuerst wäre es hilfreich zu wissen, worum genauer es hier geht. Du 
schreibst zwar von einer REST Webapp, aber deine Beschreibung geht in 
eine ganz andere Richtung.

Unter einer Webapp verstehe ich eine Applikation, die im Browser mit 
JavaScript läuft. Z.B. ein Webmailer. Das wäre eher ungünstig, wenn da 
jeder Benutzer SQL-Statements absetzen könnte wie er lustig ist. Deshalb 
und aus anderen Gründen setzt man daher einen Server dazwischen, der 
sich um Logik, Berechtigungen etc. kümmert.

Du hast ja ,wenn ich das richtig verstehe, ein C-Programm. Nur weil das 
übers Internet auf eine Datenbank zugreift, handelt es sich nicht um 
eine Webapp. Hier eine direkte gesicherte Verbindung einzurichten ist 
völlig in Ordnung.

von Tilo R. (joey5337) Benutzerseite


Lesenswert?

Thorsten schrieb:
> Im Prinzip hat dein Vorgesetzter schon recht, allerdings ist bei deinem
> Kenntnisstand zum Thema Webservices der direkte Datenbankzugriff
> höchstwahrscheinlich die sicherere Alternative.

Einen sicheren Webservice zu implementieren ist im Prinzip nicht schwer, 
es sei denn man ist Webentwickler :-(

Neben dem Problem, dass vermutlich nur berechtigte Zugriffe stattfinden 
sollen ist das Hauptrisiko SQL-Injection.

Schlecht ist:
- übergebene Parameter ungeprüft zu verwenden
- SQL-Befehle durch String-Konkatenation zusammen zu bauen
- eventuelle Fehlermeldungen detailliert anzuzeigen

Gut/wichtig ist:
- Daten & Parameter gründlich auf Plausibilität zu prüfen. Ganzzahlen 
z.B. bestehen ausschließlich aus den Ziffern 0..9. Sonder- und 
Steuerzeichen müssen entfernt oder entsprechend geschützt werden.
- Prepared Statements verwenden
- Je nach dem in welchem Format die Daten zurückgegeben werden müssen 
auch hier Sonder/Steuerzeichen entsprechend geschützt werden.

von Daniel A. (daniel-a)


Lesenswert?

Im falle von java empfehle ich spring webmvc für die Restschnittstelle, 
spring security um die Zugriffe zu prüfen, hibernate für die 
Datenbankzugriffe und jackson für die json serialosierung. Dan noch 
Maven um die Dependencies zu verwalten und noch eine 
Versionsverwaltungssoftware (git oder svn)

von S R (Gast)


Lesenswert?

@Tilo

Achso, stimmt, die Probleme hat er bei einer direkten DB-Verbindung 
natürlich allesamt nicht und ist ein spezifisches Problem bei 
Web-Anwendungen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.