PHP中的eval函数的危害和正确禁用它的方式

PHP的eval函数不是一个系统组件的功能,所以我们不能禁止它的使用disable_functions php.ini。

然而,eval()有PHP安全危害极大,所以一般不需要禁止木马入侵像下面的句子。





eval()使用的一个例子:


< PHP
$ =杯子;
名称=咖啡;
这个$字符串装备有$名称;
回声$;
eval($str =str;);
回声$;
>


这个例子的返回值是:


这个$字符串配有$名称。
这个杯子装有咖啡。


或者更高级的点是:


< PHP
$Hello World;这是元素,例如
为代码=打印(n为STRN ');; / / ,这是存储在数据库的PHP代码
回波($代码);打印后的命令组合,被替换为STR字符串,形成完整的PHP命令,但不执行。
eval($代码); / /执行这个命令
>


在eval的咖啡上面的例子,第一个字符串替换,其次是替代,和一个完整的赋值命令执行。



这种小马砸门的情形是被禁止的!

然而,互联网上的许多方法要使用disable_functions禁止eval是错误的。

事实上,eval()是不允许被禁止disable_functions在php.ini:

因为eval()是一种语言结构和功能

Eval is Zend, so it's not a PHP_FUNCTION function;

所以如何评价PHP禁止

如果你想停止评价,你可以使用PHP的扩展Suhosin:

在php.ini中安装Suhosin后,载来Suhosin.so,加上suhosin.executor.disable_eval =!

综上所述,PHP的eval函数不禁用PHP,所以我们只使用插件!