Einzelnen Beitrag anzeigen

Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
1.186 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Query aus anderer Unit verändern

  Alt 11. Okt 2017, 10:35
Hi zusammen

Ich weiss, es gibt jede Menge Beispiele, auch solche von Embarcadero, die so vorgehen, dass ein User in einem Memo ein SQL-Statement eingeben kann und dieses dann ausführen lassen kann.
Ich halte dies für ein sehr sicherheitskritisches Problem - der User kann so ein x-beliebiges Statement eingeben. Ausser den korrekten Datenabfragen können so auch Metadatenabfragen eingegeben werden, um die DB auszuspionieren oder diese Metadaten zu verändern. Im schlimmsten Fall kann eine Datenbank auf diese Weise über den Jordan geschickt werden.

Am Beispiel einer Adress-Anwendung (ich sag hier bewusst nicht Adressverwaltung) würde ich in etwa so vorgehen:
Für die Suche nach einer bestimmten Person: Eingabe des Namens in einem Edit oder einem Memo. Ein Button startet die Anfrage.
Im Programmcode ist/sind das/die Statements definiert, mit denen die meist auf mehrere Tabellen verteilten Informationen aus der DB abgerufen werden. Diese Statements können, und das ist das Wichtige, vom User nicht direkt geändert werden.
Aber der User kann über Checkboxen wählen, dass er alle Infos über diese Person sehen will (wenn er zB.keine der angebotenen Checkboxen auswählt) oder nur die Handynummer wissen will (nur Checkbox 'chbxHandy ist ausgewählt).
Metainformationen (welche und wieviele Tabellen mit welchen Feldern, wer hat Bearbeitungsrechte) können so auch abgefragt werden - aber bitte nur von Usern, die dazu berechtigt sind (Anmelde-Dialog).

Im harmlosesten Fall können Statements, die direkt eingegeben werden können, zur Beschädigung der DB führen.

Ist dein Projekt Teil deiner Einarbeitung in die DB-Programmierung, hat dein Vorgehen bislang auch Vorteile: Du kannst dir vor Augen führen, was passiert, wenn du kein korrektes Statement eingibst und es verarbeiten lassen willst. Und du kannst dir vor Augen führen, was passiert, wenn du Metadaten veränderst.

Gruss
Delbor
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch
  Mit Zitat antworten Zitat