3 Reaktionen zu “SQL Injection erfolgreich in Aktion – Türchen 4”

Kommentare abonnieren (RSS) oder TrackBack URL

in eigener Sache: SQL injection sind auch mit TypoScript möglich – und verhinderbar:
http://www.t3node.com/blog/prevent-sql-injection-in-typoscript-when-using-strings-from-get-parameters/

Steffen am 04. Dezember 2009 um 09:48

Hallo,

bei Deinem Beispiel wird mir nicht klar, woher Du die Tabelle admin_users nimmst. Alle BE-User stehen in der Tabelle be_users. Oder hat sich das in der 4.3 geändert?

Ich mußte den Text mehrmals lesen, um zu verstehen, dass alle angebenen Querys vom Angreifer abgesetzt werden. Das geht IMHO nicht so recht aus dem Text hervor. So wie ich den Text verstehe, setze ich die Querys anstelle von $_GET[id] ein. Wenn ich das tue, meldet MySQL einen Fehler. Erst wenn ich vor die Querys ein „1;“ schreibe funktioniert die Sache, da der erste Query abgeschlossen sein muß.

Als Lösungsmöglichkeit hast Du vergessen zu erwähnen, dass man grundsätzlich die DB nur über die Frameworkfunktionen ansprechen sollte.

Außerdem prüft man Eingaben vom User schon beim Abschicken des Formulars und nicht erst bei der Übergabe an die DB.

Jante am 05. Dezember 2009 um 01:04

> Außerdem prüft man Eingaben vom User schon beim Abschicken des Formulars und nicht erst bei der Übergabe an die DB.

Das stimmt nicht generell. Für int trifft das mglw. zu. Wenn aber string Werte auch zu anderen Zwecken verwendet werden sollen, ist ein sofortiges quoten nach Eingang der Parameter nicht sinnvoll.
Sicher ist es auch sinnvoll, mit whitelists auf regex Basis zu arbeiten, um Daten gleich beim Empfang zu filtern. Aber das ist mit der derzeitig halbfertigen UTF-8 Unterstützung von PHP nicht sinnvoll möglich.

Steffen am 05. Dezember 2009 um 15:22

Kategorien

Archiv