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
Jürgen P. schrieb: > Da man ja nicht direkt auf eine DB aus dem Internet zugreifen soll wurde Wer behauptet denn sowas?
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.
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
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?
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.
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_*
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.
JPA = Java Persistence API. Da wirst du mit PHP und mysqli_irgendwas nicht weit kommen.
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.
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.
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.
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)
@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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.