AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Parameterverwendung bei DB-, Feld- und Tabellennamen
Thema durchsuchen
Ansicht
Themen-Optionen

Parameterverwendung bei DB-, Feld- und Tabellennamen

Ein Thema von freejay · begonnen am 14. Jan 2016 · letzter Beitrag vom 15. Jan 2016
 
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.740 Beiträge
 
Delphi 6 Enterprise
 
#7

AW: Parameterverwendung bei DB-, Feld- und Tabellennamen

  Alt 14. Jan 2016, 16:23
Ääähhhh, sorry für meine Unwissenheit, aber wenn auf der Clientseite der Tabellenname mit einem Macro ersetzt wird, kann es doch trotzdem noch zu SQL Injection kommen!?
Ja, davon gehe ich aus. Aber erstens war das mit dem Tabellennamen nur ein in meiner Praxis nicht vorkommendes Beispiel und zweitens ging es mir zusätzlich um einen "objektmäßigeren" Code - also nicht immer diese String-/Format-Pfriemeleien - auch wenn SQL natürlich per se eher textlastig is...

Die Benutzung von Parametern verhindert allerdings meines Wissens nach sicher SQL-Injections.
Wir haben und da mal eine Klasse TSQL gebastelt, mit der man auf Basis einer Stringliste SQL-Statements zusammen bauen konnte. "Add" wurde als Property realisiert, damit man auf die Klammern verzichten konnte, das machte das im Quelltext lesbarer. Gleichzeitig gab es diverse Hilfsfunktionen für verschiedene Datenbanken. Dabei ging es hauptsächlich um das angenehme, lesbare zusammenbauen der SQL-Statements, ein paar Sachen waren drin um SQL-Injektion zu verhindern, es wurde aber trotzdem auch mit Parametern gearbeitet:

Delphi-Quellcode:
function SQL_Beispiel:String;
var s:TSQL;
begin
  s:=TSQL.Create;
  s.Add := 'Select';
  s.Add := ' Wert1,';
  s.Add := ' Wert2,';
  s.Add := ' Wert3';
  s.Add := 'From';
  s.Add := ' Tabelle';
  s.Add := 'Where';
  s.Add := ' Wert4 = ' + s.oracleStr('Suchstring'); // sowas wie QuotedStr
  s.Add := ' and Wert5 > ' + s.oracleDateOfStr('01.12.2015'); // würde zu To_Date('01.12.2015','dd.mm.yyyy')
  Result:=s.Text;
  //s.Show //zum Anzeigen des Statements in einem Memo eines kleinen Popup-Forms.
  s.Free;
end;
Ralph
  Mit Zitat antworten Zitat
 


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 08:54 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