beatovich: Parametername gleich Name der Methode

Beitrag lesen

problematische Seite

hallo

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->();

Ab require passiert es: require compiliert ein Modul, was per HTTP namentlich genannt wird.

Ja erzähle mir genau, was da passieren kann, statt Spaghetti mit Käse zu würzen. Versuche mindestens mal hilfreich zu sein.