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


Posted in PHP onJune 30, 2014

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调用mysql存储过程
Feb 14 PHP
php session 预定义数组
Mar 16 PHP
在PHP中实现Javascript的escape()函数代码
Aug 08 PHP
PHP中数字检测is_numeric与ctype_digit的区别介绍
Oct 04 PHP
有关phpmailer的详细介绍及使用方法
Jan 28 PHP
php实现比较全的数据库操作类
Jun 18 PHP
分享五个PHP7性能优化提升技巧
Dec 07 PHP
php编程每天必学之验证码
Mar 03 PHP
php简单复制文件的方法
May 09 PHP
thinkphp中的url跳转用法分析
Jul 12 PHP
thinkPHP5.0框架应用请求生命周期分析
Mar 25 PHP
laravel 实现关闭CSRF(全部关闭、部分关闭)
Oct 21 PHP
PHP登录环节防止sql注入的方法浅析
Jun 30 #PHP
PHP获取时间排除周六、周日的两个方法
Jun 30 #PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十六)
Jun 30 #PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十五)
Jun 30 #PHP
解析PHP强制转换类型及远程管理插件的安全隐患
Jun 30 #PHP
PHP数字和字符串ID互转函数(类似优酷ID)
Jun 30 #PHP
PHP把数字转成人民币大写的函数分享
Jun 30 #PHP
You might like
如何给phpadmin一个保护
2006/10/09 PHP
smarty获得当前url的方法分享
2014/02/14 PHP
PHP使用CURL_MULTI实现多线程采集的例子
2014/07/29 PHP
Mac OS下配置PHP+MySql环境
2015/02/25 PHP
PHP实现转盘抽奖算法分享
2020/04/15 PHP
JS查看对象功能代码
2008/04/25 Javascript
javascript 支持ie和firefox杰奇翻页函数
2008/07/22 Javascript
jquery tools系列 expose 学习
2009/09/06 Javascript
js 点击按钮弹出另一页,选择值后,返回到当前页
2010/05/26 Javascript
javascript for循环从入门到偏门(效率优化+奇特用法)
2012/08/01 Javascript
jquery实现input输入框实时输入触发事件代码
2014/01/28 Javascript
JQuery中使用on方法绑定hover事件实例
2014/12/09 Javascript
基于jQuery实现仿百度首页换肤背景图片切换代码
2015/08/25 Javascript
如何解决easyui自定义标签 datagrid edit combobox 手动输入保存不上
2015/12/26 Javascript
js与jQuery实现checkbox复选框全选/全不选的方法
2016/01/05 Javascript
静态页面html中跳转传值的JS处理技巧
2016/06/22 Javascript
浅谈JavaScript 覆盖原型以及更改原型
2016/08/31 Javascript
详解JS中的快速排序与冒泡
2017/01/10 Javascript
微信小程序switch组件使用详解
2018/01/31 Javascript
微信小程序wx.uploadfile 本地文件转base64的实现代码
2018/06/28 Javascript
使用vue实现一个电子签名组件的示例代码
2020/01/06 Javascript
详解JSON.stringify()的5个秘密特性
2020/05/26 Javascript
Vue项目开发常见问题和解决方案总结
2020/09/11 Javascript
详解nginx配置vue h5 history去除#号
2020/11/09 Javascript
python Django连接MySQL数据库做增删改查
2013/11/07 Python
Python处理JSON数据并生成条形图
2016/08/05 Python
Python/ArcPy遍历指定目录中的MDB文件方法
2018/10/27 Python
python实现随机加减法生成器
2020/02/24 Python
python利用文件时间批量重命名照片和视频
2021/02/09 Python
阿迪达斯比利时官方商城:adidas比利时
2016/10/10 全球购物
世界上最受欢迎的钓鱼诱饵:Rapala
2019/05/02 全球购物
世界排名第一的运动鞋市场:Flight Club
2020/01/03 全球购物
Calphalon美国官网:美国顶级锅具品牌
2020/02/05 全球购物
如何执行一个shell程序
2012/11/23 面试题
党员干部公开承诺书范文
2015/04/27 职场文书
Java实现简易的分词器功能
2021/06/15 Java/Android