从安全角度来看,逃避eval变量是否足够安全。例如,
$path = "a"; //sample value; is generated dynamically
$var = "phpinfo()"; //sample attack value; is generated dynamically
eval("\$struct$path = \$var;");
这似乎对我安全起作用。虽然似乎没有理由首先使用代码,但现在它已经存在,它无法在没有理由的情况下删除。
有没有办法($ var或$ path的任何值)可以打破这个评价,或者我只是担心太多:-)这是一个安全的案例???
答案 0 :(得分:2)
这取决于$path
的来源。
这个值打破了它:
=0;unlink('/important/file');//
答案 1 :(得分:0)
我不知道你的eval代码究竟应该做什么。但是如果它只是一个动态的varname那么类似的东西:
extract(array("\$struct$path", "\$var"));
更快。
答案 2 :(得分:-2)
您可能需要 eval 来实现带钩子的插件系统......但是您永远不应该使用它来执行动态内容(例如phpinfo)。