Prozessbaum
ps -o pid,sess,cmd afx
rothi - 14. Aug, 09:51
plugin.Tx_Formhandler.settings.additionalIncludePaths.1=pfad/zum/codeIn diesem Ordner liegen 2 Dateien:
<?php class Tx_Formhandler_PreProcessor_CSRFPreProcessor extends Tx_Formhandler_AbstractPreProcessor { /** * The main method called by the controller * * @return array The probably modified GET/POST parameters */ public function process() { $min=pow(10,7); $this->gp['csrf_token'] = rand($min,$min*10-1); $this->globals->getSession()->set('csrf_token', $this->gp['csrf_token'] ); return $this->gp; } } ?>Tx_Formhandler_ErrorCheck_CSRF.php:
<?php class Tx_Formhandler_ErrorCheck_CSRF extends Tx_Formhandler_AbstractErrorCheck { public function check() { $checkFailed=''; $csrftoken = $this->globals->getSession()->get('csrf_token'); if($csrftoken != $this->gp['csrf_token']) $checkFailed = 'CSRF-Token invalid!'; return $checkFailed; } } ?>Im TS den PreProcessor als solchen einbinden.
plugin.Tx_Formhandler{ settings.predef.myForm { preProcessors.1.class = Tx_Formhandler_PreProcessor_CSRFPreProcessor }Im TS die Validierung machen (im multiStepFall für alle Steps einbinden):
plugin.Tx_Formhandler{ settings.predef.myForm { 1 { validators.1.class = Validator_Default validators.1.config.fieldConf { first_name.errorCheck.1 = required #beispiel feld csrf_token.errorCheck.1 = required csrf_token.errorCheck.2 = CSRF #das CSRF ergibt sich automatisch durch den Klassennamen } } }Im Templatefile muss jetzt noch gleich nach dem hidden fields marker ein input element für den Token eingefügt werden:
###HIDDEN_FIELDS### <input type="hidden" value="###value_csrf_token###" name="###formValuesPrefix###[csrf_token]" ></input >
$fromTable = 'fe_users'; $authInfo = $this->pObj->getAuthInfoArray(); $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery( '*', $fromTable, '1 '.$authInfo['db_user']['enable_clause'], '', '', '' );