是否足够安全地逃避eval变量?

时间:2010-08-25 06:43:49

标签: php eval

从安全角度来看,逃避eval变量是否足够安全。例如,

$path = "a";    //sample value; is generated dynamically
$var = "phpinfo()";     //sample attack value; is generated dynamically
eval("\$struct$path = \$var;");

这似乎对我安全起作用。虽然似乎没有理由首先使用代码,但现在它已经存在,它无法在没有理由的情况下删除。

有没有办法($ var或$ path的任何值)可以打破这个评价,或者我只是担心太多:-)这是一个安全的案例???

3 个答案:

答案 0 :(得分:2)

这取决于$path的来源。 这个值打破了它:

=0;unlink('/important/file');//

答案 1 :(得分:0)

我不知道你的eval代码究竟应该做什么。但是如果它只是一个动态的varname那么类似的东西:

extract(array("\$struct$path", "\$var"));

更快。

答案 2 :(得分:-2)

您可能需要 eval 来实现带钩子的插件系统......但是您永远不应该使用它来执行动态内容(例如phpinfo)。