Einzelnen Beitrag anzeigen

Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.798 Beiträge
 
Delphi 12 Athens
 
#18

Re: Hochkomma entfernen -> INSERT INTO-Problem

  Alt 7. Nov 2008, 16:00
Zitat von Phoenix:
Zitat von HolgerCW:
Vielen dank für die Infos.
Habe da aber leider ein Problem. Ich nutze für mein ganzes Programm beim INSERT folgende Procedure:
Wie könnte ich diese umbauen, damit es klappt ? Will jetzt nicht mein ganzes Programm ändern.
Aua. Dieser Code ist nicht nur ein Abmahnungsgrund, sondern sogar einer für eine fristlose Kündigung.

Was, wenn ein Benutzer z.B. bei einem der einzugebenden Werte folgendes eingibt:
Code:
; DROP TABLE nameeinerwichtigentabelle; --
?
Du öffnest damit dem einfachsten aller Angriffe, namentlich der SQL Injection, sämtliche Türen. Also. Umbauen auf Parameter und nirgends in der Anwendung auf die Idee kommen, SQL anhand von Benutzereingaben zusammenzubauen. Das ist das allerschlimmste was man tun kann.
Darf ich mal kurz dazwischen ein gepflegtes "Nö" einwerfen?

Vielleicht klappt sowas mit Datenbankclients die es nicht interessiert, daß alle Befehle fehlerfrei ausgeführt werden sollten, bevor sie den nächsten ausführen. Aber bei Oracle sehe ich diese Gefahr nicht. Angenommen es soll folgendes passieren:
update customer set name = 'Willi'; Wenn jetzt der Tabellenname durch eine Variable gefüllt wird, die das hier beinhaltet
; DROP TABLE nameeinerwichtigentabelle; -- dann würde man ja dieses hier bekommen:
update ; DROP TABLE nameeinerwichtigentabelle; -- set name = 'Willi'; Und das gibt dann eine Exception mit einem Oraclefehler (Nummer weiss ich nicht, aber sinngemäß kommt da: Befehl nicht korrekt beendet, und der Rest wird gar nicht mehr ausgeführt. Ich weiss nicht wie das MySQL und Konsorten handhaben, aber wenn die soo leicht hinters Licht zu führen sind...hats vielleicht doch einen Grund Geld für ein DBMS zu zahlen.

Selbstverständlich sollte man lieber mit Parametern arbeiten, wegen Übersichtlichkeit und auch aus Performancegründen (Querys, bei denen sich nur die Inhalte der Paramter ändern werden schneller ausgeführt, als wenn man die gleiche Query mit unterschiedlichen Inhalten absendet.

Sherlock
Oliver
  Mit Zitat antworten Zitat