Folgende Lösung nutzt TYPO3: Falls „magic_quotes_gpc“ inaktiv ist, wird einfach simuliert, dass es aktiv ist. Sowohl zu Beginn der Frontend-Page-Generierung als auch der Backend-Page-Generierung wird dafür gesorgt, dass alle Elemente der PHP-Arrays „$_GET[]“ und „$_POST[]“ durch sich selbst überschrieben werden, nachdem „addslashes()“ auf sie angewendet worden ist. Der Grund hierfür ist, dass genau die hinter „addslashes()“ steckende Funktionalität auch im Falle von aktivierten „Magic quotes“ zur Anwendung kommt.
„addslashes()“ bietet aber, wie später noch deutlich wird, nicht immer einen wirksamen Schutz vor SQL-Injections. Um den Inhalt von „$_POST['first_name']“ zu schützen, müsste deshalb – unnötig umständlich – zunächst „stripslashes()“ darauf angewendet werden, um danach noch „quoteStr()“ zur Entschärfung zu nutzen.
Deshalb kann der direkte Zugriff auf Nutzereingaben in TYPO3-Extensions über die PHP-Superglobals $_GET[] und $_POST[] nicht empfohlen werden. Einfacher und weniger fehleranfällig ist hier allemal, die drei von TYPO3 bereitgestellten statischen Methoden zu verwenden:
- t3lib_div::_GET()
- t3lib_div::_POST()
- t3lib_div::_GP()
Darüber bekommt man die Werte der Request-Variablen ohne störende „Magic Quotes“ frei Haus geliefert. Bei der Methode „t3lib_div::_GP()“ erhalten POST-Parameter gegenüber gleichnamigen GET-Parametern den Vorzug. Die Nutzung der Methode bietet sich an, wenn man unabhängig vom tatsächlichen Request-Typ bleiben möchte. Aus Sicherheitsperspektive ist es jedoch besser, sich bei Formularen konsequent auf den Request-Typ „POST“ zu verlassen und daher „t3lib_div::_POST()“ zu verwenden. Somit wird ein Angriff via Cross-Site-Request-Forgery (CSRF) schwieriger: Böswillig manipulierte URIs, die vom ahnungslosen Opfer beispielsweise beim Lesen einer E-Mail angeklickt werden, können dann nicht mehr ohne Weiteres das Versenden eines ausgefüllten Formulars per GET-Parameter imitieren.





![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.
[...] [...]