Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Sind die ADO-Komponenten in D2006 SQL-Injection sicher? (https://www.delphipraxis.net/84566-sind-die-ado-komponenten-d2006-sql-injection-sicher.html)

quso 18. Jan 2007 15:50

Datenbank: MSSQL • Version: 2005++ • Zugriff über: ADO

Sind die ADO-Komponenten in D2006 SQL-Injection sicher?
 
Ich habe kürzlich einiges über SQL-Injection gelesen und da stellt sich mir die Frage, wie sicher die Delphi Komponenten sind.
Bsp.:
Ich verwende einen ADO-Query, welchem mittels Parameter Werte für den SQL-String zugewiesen werden. Werden diese Parameter nun überprüft oder kann hier Schadcode eingeschmuggelt werden?

Vielen Dank im voraus.

f.siebler 18. Jan 2007 15:54

Re: Sind die ADO-Komponenten in D2006 SQL-Injection sicher?
 
das hängt auch hier von der Programmierung ab... je nachdem welche Typen du für die Parameter festlegst.....

Elvis 18. Jan 2007 15:54

Re: Sind die ADO-Komponenten in D2006 SQL-Injection sicher?
 
Zitat:

Zitat von quso
Ich verwende einen ADO-Query, welchem mittels Parameter Werte für den SQL-String zugewiesen werden. Werden diese Parameter nun überprüft oder kann hier Schadcode eingeschmuggelt werden?

Parameter sind IMHO die enizig sinnvolle Art Werte an ein SQL Statement zu geben. Da sie im Statement selbst nur als Variablen auftauchen kann ihr Inhalt die Syntax des Statements nicht aushebeln.
Kurz gesagt: Du hast bereits richtig gehandelt bevor du über SQL Injections gelesen hast. ;)

Bernhard Geyer 18. Jan 2007 15:57

Re: Sind die ADO-Komponenten in D2006 SQL-Injection sicher?
 
Zitat:

Ich habe kürzlich einiges über SQL-Injection gelesen und da stellt sich mir die Frage, wie sicher die Delphi Komponenten sind.
Die Komponenten sind so so sicher wie sie verwendet werden.

Zitat:

Ich verwende einen ADO-Query, welchem mittels Parameter Werte für den SQL-String zugewiesen werden. Werden diese Parameter nun überprüft oder kann hier Schadcode eingeschmuggelt werden?
Wenn du parametrisierte Abfragen verwendest bist du gegen SQL-Injection von deiner Anwendung aus sicher. Dann müssen schon auf der SQL-Server-Seite Bugs vorhanden sein das diese Parameter nicht richtig behandelt werden. Das sind aber nicht mehr deine Fehler sondern ein Fehler der DBMS-Software.

Zacherl 18. Jan 2007 16:21

Re: Sind die ADO-Komponenten in D2006 SQL-Injection sicher?
 
SQL Injections basieren auf sowas: http://www.irgendwas.de/search.php?get=title='123'

da könnte man sowas machen als Beispiel: http://www.irgendwas.de/search.php?get=title='123' or ''=''

dann werden einfach alle Einträge angezeigt. Solange man nicht direkt die Parameter an SQL weitergibt kann nichts passieren.

quso 18. Jan 2007 19:25

Re: Sind die ADO-Komponenten in D2006 SQL-Injection sicher?
 
Zitat:

Zitat von Florian Bernd
SQL Injections basieren auf sowas: http://www.irgendwas.de/search.php?get=title='123'

da könnte man sowas machen als Beispiel: http://www.irgendwas.de/search.php?get=title='123' or ''=''

Das man Get-Variablen vor der Benutzung in SQL-Anweisungen kontrollieren muss, ist klar. Deshalb war ich mir bei folgendem unsicher, da dieses doch eigentlich das gleiche ist:

AdoQuery1.SQL:= 'Select * from foo where (Username=:ParamUsername) and (Passwort=:ParamPasswort)';
AdoQuery1.Parameters.ParamByName('ParamUsername'). Value:= Edit1.Text;
AdoQuery1.Parameters.ParamByName('ParamPasswort'). Value:= Edit2.Text;


Zitat:

Zitat von Elvis
Da sie im Statement selbst nur als Variablen auftauchen kann ihr Inhalt die Syntax des Statements nicht aushebeln.

Wunderbar!


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:58 Uhr.

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