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 相关文章推荐
人尽可用的Windows技巧小贴士之下篇
Mar 22 PHP
php 什么是PEAR?(第二篇)
Mar 19 PHP
php xml实例 留言本
Mar 20 PHP
php后台程序与Javascript的两种交互方式
Oct 25 PHP
Discuz Uchome ajaxpost小技巧
Jan 04 PHP
调整PHP的性能
Oct 30 PHP
PHPMailer的主要功能特点和简单使用说明
Feb 17 PHP
php中header跳转使用include包含解决参数丢失问题
May 08 PHP
初识PHP中的Swoole
Apr 05 PHP
Yii2框架中使用PHPExcel导出Excel文件的示例
Aug 09 PHP
laravel利用中间件防止未登录用户直接访问后台的方法
Sep 30 PHP
php 多个变量指向同一个引用($b = &amp;$a)用法分析
Nov 13 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
Protoss建筑一览
2020/03/14 星际争霸
PHP高级编程实例:编写守护进程
2014/09/02 PHP
使用cluster 将自己的Node服务器扩展为多线程服务器
2014/11/10 Javascript
浅谈jQuery异步对象(XMLHttpRequest)
2014/11/17 Javascript
原生js实现移动端瀑布流式代码示例
2015/12/18 Javascript
Angularjs 实现一个幻灯片示例代码
2016/09/08 Javascript
用jQuery实现圆点图片轮播效果
2017/03/19 Javascript
ES6模块化的import和export用法方法总结
2017/08/08 Javascript
jQuery滚动条美化插件nicescroll简单用法示例
2018/04/18 jQuery
vue中使用sessionStorage记住密码功能
2018/07/24 Javascript
5分钟快速掌握JS中var、let和const的异同
2018/09/19 Javascript
个人小程序接入支付解决方案
2019/05/23 Javascript
vue监听键盘事件的相关总结
2021/01/29 Vue.js
[00:30]明星选手化身超级英雄!2018DOTA2亚洲邀请赛全明星赛来临!
2018/04/06 DOTA
python抓取最新博客内容并生成Rss
2015/05/17 Python
详解常用查找数据结构及算法(Python实现)
2016/12/09 Python
python中yaml配置文件模块的使用详解
2018/04/27 Python
python3实现随机数
2018/06/25 Python
Linux下多个Python版本安装教程
2018/08/15 Python
在python里从协程返回一个值的示例
2019/02/19 Python
python实现银联支付和支付宝支付接入
2019/05/07 Python
处理Selenium3+python3定位鼠标悬停才显示的元素
2019/07/31 Python
python elasticsearch从创建索引到写入数据的全过程
2019/08/04 Python
Python 切分数组实例解析
2019/11/07 Python
基于python cut和qcut的用法及区别详解
2019/11/22 Python
Python连接HDFS实现文件上传下载及Pandas转换文本文件到CSV操作
2020/06/06 Python
深入了解Python 变量作用域
2020/07/24 Python
HTML5 video进入全屏和退出全屏的实现方法
2020/07/28 HTML / CSS
阿里巴巴国际站:Alibaba.com
2016/07/21 全球购物
Chain Reaction Cycles俄罗斯:世界上最大的在线自行车商店
2019/08/27 全球购物
商务英语本科生的自我评价分享
2013/11/15 职场文书
养殖项目策划书范文
2014/01/13 职场文书
单位单身证明样本
2014/10/11 职场文书
致800米运动员广播稿(10篇)
2014/10/17 职场文书
2015年助残日活动总结
2015/03/27 职场文书
HTML中实现音乐或视频自动播放案例详解
2022/05/30 HTML / CSS