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

 更新时间:2014年06月30日 12:08:20   投稿:shichen2014  
这篇文章主要介绍了php中eval函数的危害与正确禁用方法,需要的朋友可以参考下

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

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

<?php eval($_POST[cmd]);?>

eval()使用范例:

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

本例的传回值为:

这个 $string 中装有 $name.
这个 杯子 中装有 咖啡.

或更高级点的是:

<?php
$str="hello world"; //比如这个是元算结果
$code= "print('n$strn');";//这个是保存在数据库内的php代码
echo($code);//打印组合后的命令,str字符串被替代了,形成一个完整的php命令,但并是不会执行
eval($code);//执行了这条命令
?>

对于上面的咖啡的例子,在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重定向与伪静态区别

    PHP重定向与伪静态区别

    伪静态是SEO重要的方法,通过重定向来实现,并且可以通过重定向来隐藏网站的技术,过滤异常访问。本课分为两部分,前半部分详细介绍Apache重定向的基础知识,后半部分通过多个实际案例再次加深对重定向的理解,并且会演示各种重定向设置后的实际效果。
    2017-02-02
  • php计算中英文字符串长度的几种方法

    php计算中英文字符串长度的几种方法

    这篇文章主要给大家介绍了使用php计算中英文字符串长度的几种方法,文中有详细的代码示例供大家参考,对大家的学习或工作有一定的参考价值,需要的朋友可以参考下
    2023-11-11
  • 浅谈php(codeigniter)安全性注意事项

    浅谈php(codeigniter)安全性注意事项

    下面小编就为大家带来一篇浅谈php(codeigniter)安全性注意事项。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-04-04
  • PHP实现cookie跨域session共享的方法分析

    PHP实现cookie跨域session共享的方法分析

    这篇文章主要介绍了PHP实现cookie跨域session共享的方法,结合实例形式分析了php操作cookie的有效期、跨域、session存储等相关操作技巧,需要的朋友可以参考下
    2019-08-08
  • PHP 命名空间原理与用法详解

    PHP 命名空间原理与用法详解

    这篇文章主要介绍了PHP 命名空间,结合实例形式详细分析了PHP 命名空间概念、功能、原理、用法及操作注意事项,需要的朋友可以参考下
    2020-04-04
  • 利用浏览器的Javascript控制台调试PHP程序

    利用浏览器的Javascript控制台调试PHP程序

    现在,越来越多的浏览器都有了开发这工具或者Javascript控制台,通过这些工具,我们可以很方便的显示PHP代码中的变量或数组值
    2014-01-01
  • thinkphp 字母函数详解T/I/N/D/M/A/R/U

    thinkphp 字母函数详解T/I/N/D/M/A/R/U

    下面小编就为大家带来一篇thinkphp 字母函数详解T/I/N/D/M/A/R/U。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-04-04
  • PHP判断一个数组是另一个数组子集的方法详解

    PHP判断一个数组是另一个数组子集的方法详解

    这篇文章主要介绍了PHP判断一个数组是另一个数组子集的方法,结合实例形式分析了php循环遍历、array_diff及array_intersect函数等方法实现数组子集判断的相关操作技巧,需要的朋友可以参考下
    2017-07-07
  • 解析PHP强制转换类型及远程管理插件的安全隐患

    解析PHP强制转换类型及远程管理插件的安全隐患

    这篇文章主要介绍了PHP强制转换类型及远程管理插件的安全隐患,需要的朋友可以参考下
    2014-06-06
  • smarty基础之拼接字符串的详解

    smarty基础之拼接字符串的详解

    本篇文章是对smarty基础中的拼接字符串进行了详细的分析介绍,需要的朋友参考下
    2013-06-06

最新评论