Hallo Gerard Am Donnerstag, 26. Juni 2003 15:10 schrieb Jensen, Gerard:
Moin,
Von: Dieter Kroemer [mailto:kroe@rs-schesslitz.de]
Welche Sicherheitsrisiken bekomme ich denn damit?
Ganz einfach: normalerweise wird damit jede in einem Formular übergebene Variable auch PHP bekannt gemacht. Dabei werden also quasi "automagisch" neue Variablen angelegt - oder eben genau so "automagisch" mit neuem Inhalt überschrieben.
Kenne ich als "böser Bub" nun wichtige Variablen innerhalb des Scriptes, kann ich hingehen, und mir ein eigenes Formular (nicht unbedingt PHP generiert, nur mit der gleichen ACTION) erstellen, daß gezielt diese nicht mehr formularinternen sondern rein scriptinternen Variablen ändert. Gibt's da dann z.B. eine Variable "$uploadpfad", kann ich diese von einem entsprechend "vergifteten" Formular ebenfalls ändern - mit den dadurch wohl recht klar ersichtlichen Folgen, insbesondere wenn bei der Prüfung der Identität eines Benutzers etwas sorglos umgegangen wird (also genau bei "einfachen" Skripten), bzw. wenn ich auf einem OS arbeite, daß es mit User-/Gruppen-Berechtigungen nicht gerade genau nimmt... ACK
Mit "registerglobals = off" kann ich zwar über
$scriptvariable = HTTP_GET_VARS['formularvariable']; Hier sollte man, wenn man schon mit dem Problem konfrontiert neu beginnen muss, lieber gleich auf $_GET, $_POST, $_COOKIE etc. zugreifen, weil HTTP_GET_VARS etc pp. IMHO schon sehr bald nicht mehr unterstützt werden. Dann hat man das Problem wieder von Neuem. Die neuen Arrays gibt es parrallel schon seit 4.1, sollten also überall verfügbar sein.
Ein Freibrief für "sichere" Scripte ist das dabei allerdings nicht - es verhindert lediglich das Überschreiben von scriptinternen Variablen, nicht aber Probleme wie sie z.B. durch gezielt manipulierte Daten auftreten können (Session hijacking, absolute Pfad/Dateinamen etc.). FULLACK. Ein sehr wichtiger Hinweis.
CU Thorsten -- Thorsten Körner http://www.123tkShop.org