php中eval函数的危害与正确禁用方法

前端之家收集整理的这篇文章主要介绍了php中eval函数的危害与正确禁用方法前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

PHP的eval函数并不是系统组件函数,因此我们在PHP.ini中使用disable_functions是无法禁止它的。

但是eval()对于PHP安全来说具有很大的杀伤力,因此一般不用的情况下为了防止类似如下的一句话木马入侵,需要禁止

PHP;">

eval()使用范例:

PHP;"> PHP $string = '杯子'; $name = '咖啡'; $str = '这个 $string 中装有 $name.
'; echo $str; eval( "$str = "$str";" ); echo $str; ?>

本例的传回值为:

或更高级点的是:

PHP;">

对于上面的咖啡的例子,在eval里面,首先字符串被替换了,其次替换完后形成一个完整的赋值命令被执行了.

这类小马砸门的情况是需要禁止掉的!
然而网上很多说使用disable_functions禁止掉eval的方法都是错误的!
其实eval()是无法用PHP.ini中的disable_functions禁止掉的 :

because eval() is a language construct and not a function

eval是zend的,因此不是PHP_FUNCTION 函数

那么PHP怎么禁止eval呢?

如果想禁掉eval可以用PHP的扩展 Suhosin

: 安装Suhosin后在PHP.ini中load进来Suhosin.so,再加上suhosin.executor.disable_eval = on即可!

总结,

PHP的eval函数PHP中是无法禁用的,因此我们也只有使用插件了!

猜你在找的PHP相关文章