![]() |
| | LinkBack | Themen-Optionen | Thema bewerten | Ansicht |
|
#1
| |||
| |||
Hallo! Ich möchte bzw. ich entwickle gerade eine einfache Extension, bei der eingeloggte FE-User über FE-Formulare Daten eingeben können sollen, die in einer DB-Tabelle gespeichert werden sollen. Gibt es bestimmte Verfahrensweisen wie ich vorgehen muss, um Problemen wie etwa SQL Injection zu vermeiden? Momentan ist es so, dass die Daten ähnlich wie bei der tt_news-Extension über Eingabemasken im BE eingegeben werden können, die über ein FE-Plugin in einer ListView angezeigt werden. Wird ein Datensatz in dieser ListView angeklickt, gelangt man in die SingleView, die auf der selben Seite angezeigt wird. Die übergebene URL sieht so aus: http://xxx/index.php?id=38&tx_meineExtension_pi1[showUid]=6&cHash=f7215c908f Die nach [showUid] zu sehene ID "6" ist die UID des Datensatzes. Ist es dadurch nicht möglich auch in andere Datensätze zu schreiben, weil man die UID sehen kann? Wenn ja, wie kann ich das verhindern? |
|
#2
| |||
| |||
| In diesem speziellen Fall kannst Du die GET-Variable tx_meineExtension_pi1[showUid] einfach mit PHP-Code: PHP-Code: |
|
#3
| |||
| |||
| Erstmal Danke für die Antwort! Ich habe mir mal folgende Seite typo3.org: Documentation: TYPO3 Coding Guidelines(Table of Contents) durchgelesen aber so richtig durchblicken tue ich immer noch nicht. Vielleicht kannst Du oder jmd anderes mir ja weiterhelfen. Auf der Seite steht, dass man die Funktionen t3lib::_GET(), t3lib::_POST() oder t3lib::GP() verwenden soll, da diese Funktionen immer Werte liefern, wo die Quotes nicht escaped sind. Dies geschieht durch die Funktionen stripSlashesOnArray() bzw. stripSlashes(), die innerhalb der oben genannten Funktionen aufgerufen werden und alle Backslashes entfernen. Richtig? In meinem schlauen Buch "Typo3 für Entwickler" steht nun weiterhin, dass diese Funktionen automatisch verwendet werden, sofern das eigene Plugin von tslib_pibase erbt. (Ist in meinem Fall so!) Die Variablen stehen in diesem Fall als $this->piVars zur Verfügung. (Stimmt! Wie/wo das geschieht habe ich noch nicht herausfinden können) Um SQL-Injections zu vermeiden steht darüberhinaus im besagten Buch als auch auf der geposteten Seite, dass die Funktionen $GLOBALS['TYPO3_DB']->quoteStr() für alle in Quotes übergebenen Variablen und intval() für alle numerischen Variablen verwendet werden sollen. (ich hoffe das stimmt auch noch!) Außerdem sollen immer Quotes um die Werte gesetzt werden, es sei denn es sind numerische Werte. Aus den entsprechenden Klassen weiß ich, dass quoteStr() die PHP-Funktionen mysql_real_escape_string() bzw. mysql_escape_string() verwendet, um die Backslashes vor bestimmten Zeichen zu setzen, sie also zu "escapen". Richtig? Nun die große Fragen:
Ich verstehe gerade gar nix mehr! |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | Thema bewerten |
| |