Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   MySQL direkt abfragen (https://www.delphipraxis.net/189810-mysql-direkt-abfragen.html)

Schwedenbitter 25. Jul 2016 14:58

Datenbank: MySQL • Version: 5.5 • Zugriff über: ?

MySQL direkt abfragen
 
Hallo,

ich habe hier folgendes Szenario:
Auf einem Rechner (=Server) laufen html-, MySQL-Server und diverse andere Sachen. Unsere Firmensoftware ist in php realisiert. Da es aber aus Sicherheitsgründen schwer (evtl. unmöglich) ist, Geräte (Diktiergerät, Scanner, Drucker etc.) anzusteuern, mussten wir das ander lösen. Klickt der Benutzer auf einen Button, erzeugt der php-Code eine Datei, die von einer in Delphi programmierten Server-Applikation ausgewertet wird. Diese wiederum sendet dann eine Anforderung an den betreffenden Client (ebenfalls in Delphi), der dann die eigentlich Hardware-Operation ausführt.
Das ganze ist kompliziert und aufwendig zu warten. Ich würde es daher gern kürzer gestalten.

Da der MySQL-Server sowieso läuft, wäre meine Idee jetzt, dass der php-Code in einer Tabelle einen Eintrag erzeugt. Die Clients verbinden sich nun - statt mit dem selbstgebauten - direkt mit dem MySQL-Server und holen sich den Request.

Dazu habe ich (vorerst) 2 Fragen:
  1. Gibt es Sicherheitsbedenken gegen dieses Vorgehen? Ich selbst habe ein mulmiges Gefühl, wenn die Clients direkt mit dem MySQL-Server verbunden sind.
  2. Kann man - außer über ein timergesteuertes Polling - diese Event-Einträge abfragen? Im Moment erzeugt das Ganze keine Last, weil der Client erst und nur dann reagiert, wenn der Server ihm eine Nachricht zukommen lässt. ich weiß nicht, ob das mit MySQL auch möglich wäre.

Für Ideen wäre ich dankbar,
Alex

-=ZGD=- 25. Jul 2016 15:28

AW: MySQL direkt abfragen
 
Hallo.

Zur zweiten Frage: http://stackoverflow.com/questions/3...hi-application

Schwedenbitter 25. Jul 2016 15:47

AW: MySQL direkt abfragen
 
Zitat:

Zitat von -=ZGD=- (Beitrag 1343305)

Danke erstmal für die Antwort.
Wenn ich das richtig deute, wird es dadurch nicht einfacher. Denn der Ersteller "ended up" mit einer 2-Komponenten-Lösung bestehend aus Windows-App (Verbindung zur MySQL-DB) und einem Client. Da die sich vermutlich sehr gut auskennen, entnehme ich dem also, dass es keine einfache Lösung Delphi-Client <-> mySQL-DB gibt.
Dann bliebe allenfalls noch der Timer. Das hat aber den Nachteil der schlechten Skalierbarkeit. Das mag mit 10 Clients noch OK sein. Aber wenn es nachher mehr werden, würde das vermutlich einen DoS nach sich ziehen. Schade eigentlich.

milos 25. Jul 2016 16:47

AW: MySQL direkt abfragen
 
Hi,

Zum ersten: Es ist nur so sicher wie du das ganze aufbaust. Grundsätzlich solltest du heute immer MySQLi verwenden wenn du mit PHP arbeitest. Achte darauf jeden möglichen User-Input zu validieren und am besten gleich zu escapen (mysqli::real_escape_string) bevor du es einfach in die DB jagst. Wenn du sauber arbeitest wird da keiner so schnell was kaputt kriegen, wobei man in den meisten Fällen nicht ausschliessen kann das trotzdem kleine bis gravierende Sicherheitsprobleme vorliegen.

Aber wäre es nicht noch einfacher die Verbindung direkt über TCP sockets zu lösen? Geht in PHP auch ;) (Hab mal nen IRC-Bot in PHP geschrieben, ist aber lange her :D)

Freundliche Grüsse


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:40 Uhr.

Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf