in reply to Re: relaying arguments using system call
in thread relaying arguments using system call
I prefer this form (it is a little faster, a little shorter and lets you add more args at the cost of a , and the $arg_name).
my( $username, $user ) = @ARGV;
The multi-arg form of system offers some protection from hacking but remember you are passing $username and $user to the SHELL so it is a good idea to make sure that they only contain non shell chars. Typically you remove everything except your allowed list (it is better to specify what you will allow than try to think of everything bad - you will miss stuff):
$var = ";rm -rf /*;"; my $ILLEGAL_CHARS = qr/[^A-Za-z0-9._-]/; $var =~ s/$ILLEGAL_CHARS/_/g; print $var;
If you were using the single arg form of system and allowed that string (un-sanitized) it would try to execute that command.....
cheers
tachyon
s&&rsenoyhcatreve&&&s&n.+t&"$'$`$\"$\&"&ee&&y&srve&&d&&print
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Re: Re: relaying arguments using system call
by jonnyfolk (Vicar) on Mar 21, 2003 at 12:35 UTC | |
by benn (Vicar) on Mar 21, 2003 at 14:34 UTC | |
by tachyon (Chancellor) on Mar 22, 2003 at 08:06 UTC |