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 相关文章推荐
截获网站title标签之家内容的例子
Oct 09 PHP
用PHP读取flv文件的播放时间长度
Sep 03 PHP
php正则表达式(regar expression)
Sep 10 PHP
php实现XSS安全过滤的方法
Jul 29 PHP
php限制文件下载速度的代码
Oct 20 PHP
PHP加密解密类实例代码
Jul 20 PHP
PHP简单预防sql注入的方法
Sep 27 PHP
PHP在innodb引擎下快速代建全文搜索功能简明教程【基于xunsearch】
Oct 14 PHP
php删除数组指定元素实现代码
May 03 PHP
PHP+MySQL实现输入页码跳转到指定页面功能示例
Jun 01 PHP
php使用yield对性能提升的测试实例分析
Sep 19 PHP
php设计模式之观察者模式实例详解【星际争霸游戏案例】
Mar 30 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
PHP sleep()函数, usleep()函数
2016/08/25 PHP
php操作access数据库的方法详解
2017/02/22 PHP
PHP程序员简单的开展服务治理架构操作详解(二)
2020/05/14 PHP
关于juqery radio写法的兼容性问题(新老版本jquery)
2010/06/14 Javascript
JS链式调用的实现方法
2013/03/07 Javascript
jQuery setTimeout()函数使用方法
2013/04/07 Javascript
jQuery遍历Form示例代码
2013/09/03 Javascript
深入剖析JavaScript中的枚举功能
2014/03/06 Javascript
jquery实现的仿天猫侧导航tab切换效果
2015/08/24 Javascript
javascript中select下拉框的用法总结
2016/01/07 Javascript
js定义类的几种方法(推荐)
2016/06/08 Javascript
JavaScript trim 实现去除字符串首尾指定字符的简单方法
2016/12/27 Javascript
vue.js从安装到搭建过程详解
2017/03/17 Javascript
JavaScript使用readAsDataUrl方法预览图片
2017/05/10 Javascript
AugularJS从入门到实践(必看篇)
2017/07/10 Javascript
利用jQuery异步上传文件的插件用法详解
2017/07/19 jQuery
vue element项目引入icon图标的方法
2018/06/06 Javascript
解决Vue在封装了Axios后手动刷新页面拦截器无效的问题
2018/11/08 Javascript
vueScroll实现移动端下拉刷新、上拉加载
2019/03/22 Javascript
vue-router路由模式详解(小结)
2019/08/26 Javascript
vue vantUI实现文件(图片、文档、视频、音频)上传(多文件)
2019/10/15 Javascript
nodejs+koa2 实现模仿springMVC框架
2020/10/21 NodeJs
浅谈五大Python Web框架
2017/03/20 Python
python中正则表达式 re.findall 用法
2018/10/23 Python
Python+OpenCV实现图像融合的原理及代码
2018/12/03 Python
python单向链表的基本实现与使用方法【定义、遍历、添加、删除、查找等】
2019/10/24 Python
基于pytorch中的Sequential用法说明
2020/06/24 Python
常用的HTML5列表标签
2017/06/20 HTML / CSS
美国的Eastbay旗下的运动款子品牌:Final-Score
2018/01/01 全球购物
瑞典多品牌连锁店:Johnells
2021/01/13 全球购物
给校长的建议书400字
2014/05/15 职场文书
班级心理活动总结
2014/07/04 职场文书
八年级上册语文教学计划
2015/01/22 职场文书
社区重阳节活动总结
2015/03/24 职场文书
2015年新农村建设指导员工作总结
2015/07/24 职场文书
Python使用Web框架Flask开发项目
2022/06/01 Python