Einen HTTP-Request ganz ohne Web-Browser selbst zu erstellen, ist recht unkompliziert möglich, beispielsweise über „telnet“ oder „PuTTY“. Tut man dies, bekommt man vor Augen geführt, dass ein relativ großer Anteil eines HTTP-Requests vom Nutzer frei modifiziert werden kann, ohne dass der Webserver das für anstößig hält und mit einem „Bad Request Error“ antwortet.
Es dürfte nicht überraschen, dass sämtliche GET- und POST-Parameter beliebig gestaltet werden können, unabhängig davon, ob sie vom Typ „hidden“ sind. Auch der „Host“ und der absolute Pfad (zusammen bilden sie die URI) sind frei wählbar. Das mag zwar banal klingen, hat aber Auswirkungen auf einige Elemente des superglobalen PHP-Arrays „$_SERVER[]“, was durchaus zu Sicherheitslücken führen kann.
Beispielsweise wird damit der Inhalt des Array-Elements mit dem Key „PHP_SELF“ zum potenziellen Einfallstor für Cross-Site-Scripting, sofern dieser ungefiltert in die HTML-Seite geschrieben wird. Dies kann beispielsweise im Rahmen des „action“-Attributs eines HTML-Formular passieren. Vorsicht geboten ist auch bei den Werten der Header-Felder „User-Agent“, „Referer“ und „Cookie“. Der Inhalt kann vom Nutzer so verändert werden, dass die Felder böswillige Zeichenfolgen enthalten, die dann auf PHP-Ebene auch im Array „$_SERVER“ landen. Ein direkter Zugriff auf dieses Array ist unter TYPO3 übrigens nicht empfehlenswert. Statt dessen sollte die statische Methode „getIndpEnv()“ der Klasse „t3lib_div“ genutzt werden, die eine Webserver-Abstraktionsebene einzieht. Doch befreit „getIndpEnv()“ nicht von der Pflicht, die Nutzereingaben zu entschärfen.
Als Extension-Entwickler hat man im Alltag vor allem mit den GET- und POST-Parametern zu tun, die im folgenden der Einfachheit halber als Request-Variablen bezeichnet werden. Sie stehen in den PHP-Arrays „$_GET[]“ und „$_POST[]“ zur Verfügung, erfahrene Extension-Entwickler verwenden diese Arrays jedoch nicht.





![TYPO3: 10 Jahre in 60 Sekunden zusammengefasst [Video]](http://t3n.de/uploads/t3n-news-post-361575_typo3_medium.jpg)

2 Antworten
von wir 12.04.2010 (20:42Uhr) 1.
Ein CSRF-Angriff kann nicht dadurch verhindert werden, dass Requests, die zu einer Veränderung von Daten führen, nur per HTTP-POST akzeptiert werden. Auch per HTTP-POST kann ohne weiteres ein gefälschter Request abgesetzt werden. Dazu erstellt der Angreifer eine Seite, auf die er das Opfer lockt. Dort wird der manipulierte Request entweder mittels einer clientseitigen Skriptsprache wie zum Beispiel Javascript erzeugt oder der Angreifer bringt das Opfer dazu, auf einen Button oder ein Bild zu klicken, wodurch der Request abgesetzt wird. Wählt der Angreifer als Ziel (target-Parameter) des Formulars einen unsichtbaren Frame oder Inlineframe, sind auch hier die Chancen gering, dass das Opfer den Angriff bemerkt. (http://de.wikipedia.org/wiki/Cross-Site_Request_Forgery#Nur_HTTP-Post_akzeptieren)
Was mich aber interessieren würde, ist ob TYPO3 Funktionen bereitstellt um Canaries in Formulare einzufügen.
von Get Variablen - PHP include - TYPO3 Foru… 17.06.2011 (14:06Uhr) 2.
[...] [...]