beatovich: Parametername gleich Name der Methode

Beitrag lesen

problematische Seite

hallo

Inwiefern habe ich ein Sicherheitsleck, wenn im Formular als hidden feld

module=login action=logout

stehen und dann ein eine entsprechende login.pm eingebunden wird, die eben diese Methode enthält?

Das hidden feld ist nicht das Problem. Das Problem ist, daß Parameter gleichnamige Funktionen aufrufen. D.h., man kann beliebige Funktionen per HTTP aufrufen 😉

Wie soll das hier möglich sein?

	elsif( exists $POST->{xhr} and $POST->{xhr} eq 'xhr'){
		$postresponseformat="json";
		if( exists $POST->{modul} and $POST->{modul} =~ /^[a-z]+$/ ){
			warn "param modul [" . $POST->{modul} . "] \r\n";
			my $pm = 'apps/'.$POST->{modul}.'/'.$POST->{modul}.'.pm';
			if( -e $pm && -r _ && -f _ ){
				my $modulrun = require $pm;
				$actionresult = $modulrun->();
			}
			else{ warn("pm not found: $pm \r\n"); }
		}
		elsif( 
			$POST->{action} =~ /^[A-Za-z]+$/
			and 
			exists( $actions->{ $POST->{action} } )
		){	
			$actionresult = $actions->{ $POST->{action} }();
		}
		else{ warn "param modul [" . $POST->{modul} . "] chars outside [a-z] \r\n"; }
	}