AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Query aus anderer Unit verändern
Thema durchsuchen
Ansicht
Themen-Optionen

Query aus anderer Unit verändern

Ein Thema von Luca Haas · begonnen am 10. Okt 2017 · letzter Beitrag vom 11. Okt 2017
Antwort Antwort
Luca Haas

Registriert seit: 23. Aug 2017
Ort: Bad Breisig
139 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#1

AW: Query aus anderer Unit verändern

  Alt 10. Okt 2017, 11:21
Okay ich habs in der Zeit etwas anders gelöst, aber ich werde das hier auch später mal ausprobieren.

Ich habe es jetzt so gelöst, dass ich mir eine Variable erstellt habe, der ich den Wert des SQL-Befehls gegeben habe, welchen ich Unit1 einfach mit
Delphi-Quellcode:
unit Unit2;

interface

uses
unit1
übergeben habe. Wenn man darauf aufpasst, dass man nich beide Units gegenseitig zum interface, sondern zur implementation schreibt klappt das auch super.
  Mit Zitat antworten Zitat
Delbor

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

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
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:04 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz