openrat-cms

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs

commit 64b3e855f702f7df87cb09a65e485c9db03cadf2
parent 1db4229ca013d0f03b9c08bff72df1222f381079
Author: dankert <devnull@localhost>
Date:   Fri, 26 Jun 2009 01:07:15 +0200

Prüfen der Request-Variablen und Entfernen nicht erlaubter Zeichen. Falls nicht anders angegeben, sind alphanumerische Zeichen erlaubt. Dabei Benutzen der Methode Text::clean(...).

Diffstat:
actionClasses/Action.class.php | 26++++++++++++++++----------
serviceClasses/Text.class.php | 18++++++++++++++++++
2 files changed, 34 insertions(+), 10 deletions(-)

diff --git a/actionClasses/Action.class.php b/actionClasses/Action.class.php @@ -127,16 +127,21 @@ class Action switch( $transcode ) { case 'abc': - $value = strip_tags( strtolower($REQ[ $varName ] ) ); - $my_set = 'abcdefghijklmnopqrstuvwxyz._-'; - $first = strtr( $value, $my_set, str_repeat('#', strlen($my_set)) ); - $second = strtr( $value, $first , str_repeat('_', strlen($first )) ); - return $second; - - case 'all': - return strip_tags( $REQ[ $varName ] ); + case 'alpha': + $value = $REQ[ $varName ]; + return Text::clean($value,'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'); + case 'alphanum': default: + $value = $REQ[ $varName ]; + return Text::clean($value,'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 ,._-/:='); + + case 'num': + case '123': + $value = $REQ[ $varName ]; + return Text::clean($value,'1234567890.'); + + case 'raw': return $REQ[ $varName ]; } } @@ -348,8 +353,9 @@ class Action // if ( count($errors)>0 ) - extract( $REQ ); - + foreach( $REQ as $requestVar=>$dummy ) + $$requestVar = $this->getRequestVar( $requestVar ); + // Setzen einiger Standard-Variablen // $tpl_dir = OR_THEMES_DIR.$conf['interface']['theme'].'/pages/html/'; diff --git a/serviceClasses/Text.class.php b/serviceClasses/Text.class.php @@ -366,6 +366,24 @@ class Text $text = substr($src,0,$beg).substr($src,$end); return $text; } + + + /** + * Saeubert eine Zeichenkette. + * + * Es werden ungueltige Zeichen aus einer Zeichenkette entfernt. Es wird mit einer Whitelist + * gearbeitet, d.h. die erlaubten Zeichen werden angegeben. + * + * @param $eingabe Die Eingabe-Zeichenkette, aus der ungueltige Zeichen entfernt werden sollen. + * @param $erlaubt Die erlaubten Zeichen (eine "White-List") + * @return String die aufgeräumte Zeichenkette + */ + function clean( $eingabe, $erlaubt ) + { + $first = strtr( $eingabe, $erlaubt, str_repeat('#', strlen($erlaubt)) ); + $second = strtr( $eingabe, $first , str_repeat('_', strlen($first )) ); + return str_replace('_','',$second); + } }