是"返回eval"邪恶?

时间:2016-07-13 21:46:03

标签: php eval

鉴于声明

$someValue = eval("return \$$userSetting;");

$userSetting怎么可能有危险?它看起来最糟糕的是暴露变量,但这实际上是它应该在这段代码中做的事情。有没有办法用PHP variable variables执行任意代码?

1 个答案:

答案 0 :(得分:4)

您可以轻松地调用任意函数(更准确地说 - 任意表达式):

$userSetting = 'userSetting && print(123)';

这适用于所有(?)php版本。

使用php7,它变得更加方便,因为你可以就地调用匿名函数:

$userSetting = 'userSetting && (function() { do whatever you want })();';