MySQL Datenbank REST App

Gast #4591548
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
Gast
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
Gast
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?
Gast
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.
Gast
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_*
Gast
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.
Gast
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.
Gast
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.
Gast
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 :)
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.
Persönliche Seite
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.
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)
Gast
@Tilo

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

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 10 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.