![](https://seccdn.libravatar.org/avatar/5691254493ac05f2ead995f8de53924b.jpg?s=120&d=mm&r=g)
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... Mit "registerglobals = off" kann ich zwar über $scriptvariable = HTTP_GET_VARS['formularvariable']; (bzw. dasselbe mit HTTP_PUT_VARS) nur etwas "umständlicher" an den Inhalt der Variablen in meinem Formular kommen, dafür kann ich aber sicher sein, daß wirklich nur diejenigen Variablen einen Wert zugewiesen bekommen, denen ich auch aus dem Formular etwas übergeben lassen wollte. 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.).
Viele Grüße Dieter
Bis denn Gerard