--- "Randal L. Schwartz" <[EMAIL PROTECTED]> wrote:
> >>>>> "Rene" == Rene Verharen <[EMAIL PROTECTED]> writes:
>
> Rene> The (sub)dirs I want to create are input from a form, so I had to
> Rene> change your example a little because
>
> Rene> my @dir=qw($FORM{'dir'});
>
> No no no! This is a security hole, unless you've also validated the
> data using code you didn't show. Please either *say* that or *show*
> that... we have a lot of beginners looking over your shoulder.
The amusing thing is, in this tiny example, this winds up NOT being a security hole
only because
the author forgot (or didn't know) that qw// does not interpolate variables (perldoc
perlop):
$ perl -e '
$FORM{'dir'} = shift;
my @dir = qw($FORM{'dir'});
print "@dir\n$FORM{'dir'}"' 'rm -fr /'
$FORM{dir}
rm -fr /
Blind luck saves the day (though, to be fair, once that programmer realizes the
problem, the fix
would probably introduce a security problem).
Cheers,
Curtis "Ovid" Poe
=====
"Ovid" on http://www.perlmonks.org/
Someone asked me how to count to 10 in Perl:
push@A,$_ for reverse q.e...q.n.;for(@A){$_=unpack(q|c|,$_);@a=split//;
shift@a;shift@a if $a[$[]eq$[;$_=join q||,@a};print $_,$/for reverse @A
__________________________________________________
Do You Yahoo!?
Send your FREE holiday greetings online!
http://greetings.yahoo.com
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]