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 友好URL的实现(吐血推荐)
Oct 04 PHP
浅析PHP递归函数返回值使用方法
Feb 18 PHP
作为PHP程序员应该了解MongoDB的五件事
Jun 03 PHP
php数组(array)输出的三种形式详解
Jun 05 PHP
浅析HTTP消息头网页缓存控制以及header常用指令介绍
Jun 28 PHP
php使用GD实现颜色渐变实例
Jun 02 PHP
讲解WordPress开发中一些常用的debug技巧
Dec 18 PHP
Symfony生成二维码的方法
Feb 04 PHP
教你在header中隐藏php的版本信息
Aug 10 PHP
yii2多图上传组件的使用教程
May 10 PHP
PHP实现普通hash分布式算法简单示例
Aug 06 PHP
php pdo连接数据库操作示例
Nov 18 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 5.2.14+fpm+memcached(具体操作详解)
2013/06/18 PHP
通过php修改xml文档内容的方法
2015/01/23 PHP
从性能方面考虑PHP下载远程文件的3种方法
2015/12/29 PHP
PHP hebrev()函数用法讲解
2019/02/21 PHP
laravel中的fillable和guarded属性详解
2019/10/23 PHP
javascript parseInt与Number函数的区别
2010/01/21 Javascript
javascript学习(二)javascript常见问题总结
2013/01/02 Javascript
使用js修改客户端注册表的方法
2013/08/09 Javascript
JQuery与JS里submit()的区别示例介绍
2014/02/17 Javascript
JavaScript设计模式之单例模式实例
2014/09/24 Javascript
JavaScript中实现继承的三种方式和实例
2015/01/29 Javascript
JavaScript的Backbone.js框架环境搭建及Hellow world示例
2016/05/07 Javascript
9个让JavaScript调试更简单的Console命令
2016/11/14 Javascript
Webstorm2016使用技巧(SVN插件使用)
2018/10/29 Javascript
angularjs请求数据的方法示例
2019/08/06 Javascript
layui表格内放置图片,并点击放大的实例
2019/09/10 Javascript
layui实现下拉复选功能的例子(包括数据的回显与上传)
2019/09/24 Javascript
JS如何操作DOM基于表格动态展示数据
2020/10/15 Javascript
python通过urllib2爬网页上种子下载示例
2014/02/24 Python
教你用一行Python代码实现并行任务(附代码)
2018/02/02 Python
Python3.7实现中控考勤机自动连接
2018/08/28 Python
python实现转盘效果 python实现轮盘抽奖游戏
2019/01/22 Python
Python批量生成幻影坦克图片实例代码
2019/06/04 Python
Anaconda+VSCode配置tensorflow开发环境的教程详解
2020/03/30 Python
python数据分析工具之 matplotlib详解
2020/04/09 Python
Internet体系结构
2014/12/21 面试题
英文版餐饮运营管理求职信
2013/11/06 职场文书
人力资源管理毕业生自荐信
2013/11/21 职场文书
竞聘副主任科员演讲稿
2014/01/11 职场文书
生日宴会主持词
2014/03/20 职场文书
优秀大学生事迹材料
2014/12/24 职场文书
初中作文评语
2014/12/25 职场文书
2015年仓库工作总结
2015/04/09 职场文书
MySQL 服务和数据库管理
2021/11/11 MySQL
利用uni-app生成微信小程序的踩坑记录
2022/04/05 Javascript
深入理解MySQL中MVCC与BufferPool缓存机制
2022/05/25 MySQL