Dieser Thread hat mich daran erinnert, dass ich vor vielen Jahren mal einen Entwurf für eine Lösung dieses Problems gemacht habe.
Die Idee ist, mit Lazarus Datenbankkomponenten auf Web-Datenbanken zugreifen zu können, ohne den MySQL Server zu exponieren.
Als ich mir das nochmals anschauen wollte, musste ich feststellen, dass es nicht mehr läuft (insb. auf der PHP Seite).
Deshalb hier eine erneuerte Version:
https://www.theo.ch/lazarus/xmlmysqldataset.zip
In dem Zip befindet sich neben dem Lazarus Code auch eine PHP Datei.
Die muss man auf einen (LAMP) Server legen und
Code: Alles auswählen
$server = 'localhost';
$database = '';
$username = ';
$password = '';
In Unit1 muss man dann die URL anpassen:
Code: Alles auswählen
procedure TForm1.FormCreate(Sender:TObject);
begin
bd:=TXMLMySQLDataSet.Create(self);
bd.URL:='http://localhost/~theo/laz/query_server_xml.php';
bd.AfterDelete:=@Datasource1DataSetAfterDelete;
DataSource1.DataSet :=bd;
end;
Das ist natürlich noch für "Bastler", aber wenn Interesse besteht, könnte man das auch noch verfeinern und auf Git packen etc.
Die Sicherheit ist insofern besser, als dass man keine Firewall zum MySQL Server offen halten muss. Die meisten Provider lassen das ja eh nicht zu.
Man kann auch den Zugriff auf nur eine Datenbank beschränken.
Sonst ist aber natürlich in dieser Version auch SQL-Injection möglich. Man kann das teilweise mit MySQL User-permissions verhindern, oder auch im PHP abfangen..