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:
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);
+ }
}