Thema: Delphi MySQL & PHP-Problem

Einzelnen Beitrag anzeigen

Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.611 Beiträge
 
#14

Re: MySQL & PHP-Problem

  Alt 23. Nov 2009, 07:19
Zitat von ecHo89:
mysql_query("UPDATE " . $tablename . " SET AnzahlReg= " . $val[AnzahlReg] . " WHERE Seriennummer='" . $Seriennummer . "'");
Du weisst schon das genau das einer der am häufigsten genannten Gründe ist, warum PHP-Anwendungen als unsicher gelten?

Stelle Dir mal vor, der User gibt als Seriennummer in Deiner Delphi-Anwendung folgendes ein:
Code:
123'; DELETE FROM TABLE Table2;
Das Statement was bei raus kommt ist folgendes:
SQL-Code:
UPDATE tblBlaBlubb SET AnzahlReg= 5 WHERE Seriennummer='123';
DELETE FROM TABLE table2;
Das erste Statement liefert noch nichtmal einen Fehler, es wird einfach kein Datensatz gefunden. Das zweite Statement löscht mal kurzerhand den Inhalt einer Deiner Tabellen.

Wenn Du Dich wunderst wie man an die Tabellen kommt: Man kann den Netzwerkverkehr und damit das abgefragte PHP-Script recht einfach mittels Netzwerk-Sniffern herausfinden. Mit anderen Befehlen die man direkt an Dein PHP-Script schicken kann (also ohne Umweg über Deine Delphi-Anwendung) kann man z.B. anstelle des DELETE FROM Befehls erstmal ein SHOW TABLES; absetzen. In der Fehlerausgabe Deines Scriptes sieht man dann schön alle zur verfügung stehenden Tabellen. Und dann kann man die sich sogar komplett ausgeben lassen und findet sogar alle zur Verfügung stehenden Seriennummern heraus. Und man kann sogar ein UPDATE laufen lassen, dass die Registierung wieder auf 0 setzt.

Mach Dir bitte Gedanken ob das so gewollt ist oder ob Du vielleicht ein bisschen mehr Aufwand in parametrisierte Statements stecken willst, mit denen Du so eine SQL-Injection vermeiden könntest.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat