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 VS ASP
Oct 09 PHP
php基础知识:类与对象(2) 自动加载对象
Dec 13 PHP
php empty,isset,is_null判断比较(差异与异同)
Oct 19 PHP
php header Content-Type类型小结
Jul 03 PHP
php分页思路以及在ZF中的使用
May 30 PHP
Windows下的PHP安装文件线程安全和非线程安全的区别
Apr 23 PHP
ThinkPHP3.1新特性之G方法的使用
Jun 19 PHP
getimagesize获取图片尺寸实例
Nov 15 PHP
php实现cookie加密的方法
Mar 10 PHP
PHP实现长文章分页实例代码(附源码)
Feb 03 PHP
Thinkphp5.0 框架Model模型简单用法分析
Oct 11 PHP
Laravel实现ORM带条件搜索分页
Oct 24 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 如何向 MySQL 发送数据
2006/10/09 PHP
php中文字符截取防乱码
2008/03/28 PHP
用php来改写404错误页让你的页面更友好
2013/01/24 PHP
把textarea中字符串里含有的回车换行替换成&amp;lt;br&amp;gt;的javascript代码
2007/04/20 Javascript
用js模拟JQuery的show与hide动画函数代码
2010/09/20 Javascript
js对象之JS入门之Array对象操作小结
2011/01/09 Javascript
jQuery 1.5.1 发布,全面支持IE9 修复大量bug
2011/02/26 Javascript
火狐4、谷歌12不支持Jquery Validator的解决方法分享
2011/06/20 Javascript
常用的JavaScript WEB操作方法分享
2015/02/28 Javascript
C#中使用迭代器处理等待任务
2015/07/13 Javascript
对于jQuery性能的一些优化建议
2015/08/13 Javascript
js如何判断访问是来自搜索引擎(蜘蛛人)还是直接访问
2015/09/14 Javascript
JS+CSS实现带有碰撞缓冲效果的竖向导航条代码
2015/09/15 Javascript
使用node.js搭建服务器
2017/05/20 Javascript
Vue-Router实现组件间跳转的三种方法
2017/11/07 Javascript
JS中offset和匀速动画详解
2018/02/06 Javascript
写一个移动端惯性滑动&amp;回弹Vue导航栏组件 ly-tab
2018/03/06 Javascript
轻松解决JavaScript定时器越走越快的问题
2019/05/13 Javascript
python实现将文本转换成语音的方法
2015/05/28 Python
python实现对文件中图片生成带标签的txt文件方法
2018/04/27 Python
python变量的存储原理详解
2019/07/10 Python
详解Django ORM引发的数据库N+1性能问题
2020/10/12 Python
html5+css3进度条倒计时动画特效代码【推荐】
2016/03/08 HTML / CSS
日本乐天德国站:Rakuten.de
2019/05/16 全球购物
世界各地的旅游、观光和活动:Isango!
2019/10/29 全球购物
优纳科技软件测试面试题
2012/05/15 面试题
企业申诉管理制度
2014/01/30 职场文书
关于孝道的演讲稿
2014/05/21 职场文书
2015年小学美术工作总结
2015/05/25 职场文书
2016简历自荐信优秀范文
2016/01/29 职场文书
八年级作文之感悟亲情
2019/11/20 职场文书
mysql字符串截取函数小结
2021/04/05 MySQL
Python源码解析之List
2021/05/21 Python
你真的了解redis为什么要提供pipeline功能
2021/06/22 Redis
一篇文章看懂MySQL主从复制与读写分离
2021/11/07 MySQL
Mysql开启外网访问
2022/05/15 MySQL