Guten Morgen Alain,
morgen,
my $cmd = "@ARGV";
würde
$ENV{"PATH"} = "";system "$cmd";
das taint problem nicht grundsätzlich so gelöst?
Nicht ganz. Zunächst einmal müsste der Pfad mit einfachen Anführungszeichen gesetzt werden. Etwa so:
$ENV{PATH} = '';
Dies nützt dir aber nur etwas, wenn der Aufruf nicht von ausherhalb kommt. Beispiel:
my $cmd = "ps -ef";
system "$cmd";
Wenn das Kommando allerdings von Ausserhalb eingelesen wird, wie zum Beispiel:
my $cmd = "@ARGV";
system "$cmd";
dann bleibt $cmd tainted.
Eine einfache Möglichkeit, dies zu untainten, hat, so glaube ich, Siechfred schon erklärt.
if ( /^([-@\w.]+)$/ ) {
$cmd = $1;
}
else {
die "Argument ist tainted!\n";
}
system "$cmd";
jetzt funktioniert es.
Ich hoffe, dass ich es so gut erklärt habe, wie ich es auch selber verstanden habe.
Bis dann.
Greez,
opi
Selfcode: ie:( fl:( br:^ va:) ls:] fo:) rl:( n4:? ss:| de:] ch:? mo:|