note
tadman
How does using 'require' differ from using 'eval'? The documentation
of 'require' states that it is fundamentally a fancy 'do',
which is just another way of saying 'eval'. It's not the
"catching errors" part that worries people. It's the fact
that your required file could contain stuff you didn't
expect, such as a program to send your password file to
some remote system.
<BR>
<BR>
All in all, it is probably best to not require, include, or
in any way run code that is arbitrary. 'use', being a compile
time thing (outside of eval, of course) is a lot safer
since the code can't really be modified while the program is
running.
<BR>
<BR>
However, if you are operating in a "clean room" environment,
such as a dedicated server with strictly controlled access,
where the output from Data::Dumper cannot be tampered with
in any conceivable way, I would say that eval'ing that
code is not as risky as some would have you believe.
<BR>
<BR>
The
real risk comes from running on shared systems with untrusted
users who may be able to "deposit" files in your dump directory
since they are using the same Web server user (i.e. nobody)
and then are able to execute arbitrary code.
92509
92550