php 禁用eval( )函数
php的eval函数并不是系统组件函数,因此我们在php.ini中使用disable_functions是无法禁止它的。
但是eval()对于php安全来说具有很大的杀伤力,因此一般不用的情况下为了防止类似如下的一句话木马入侵,需要禁止!
<?php
$string = "beautiful";
$time = "winter"; $str = 'This is a $string $time morning!';
echo $str. "<br />"; eval("\$str = \"$str\";");
echo $str;
?>
然而网上很多说使用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中是无法禁用的,因此我们也只有使用插件了!
安装 Suhosin
官网:http://suhosin.org/stories/index.html
1、安装编译工具
yum install wget make gcc gcc-c++ zlib-devel openssl openssl-devel pcre-devel kernel keyutils patch perl
2、安装suhosin
cd /usr/local/src #进入软件包存放目录
wget http://download.suhosin.org/suhosin-0.9.33.tgz #下载
tar zxvf suhosin-0.9.33.tgz #解压
cd suhosin-0.9.33 #进入安装目录
/usr/local/php5/bin/phpize #用phpize生成configure配置文件
./configure --with-php-config=/usr/local/php/bin/php-config #配置
make #编译
make install #安装
安装完成之后,出现下面的界面,记住以下路径,后面会用到。
/usr/local/php5/lib/php/extensions/no-debug-non-zts-20090626/ #suhosin模块路径
3、配置php支持suhosin
vi /usr/local/php5/etc/php.ini #编辑配置文件,在最后一行添加以下内容
extension="suhosin.so"
4、测试
vi /usr/local/nginx/html/phpinfo.php #编辑
5.禁用eval
suhosin.executor.disable_eval = on
php 禁用eval( )函数的更多相关文章
- php 如何禁用eval() 函数实例详解
在php中eval是一个函数并且不能直接禁用了,但eval函数又相当的危险并经常会出现一些问题,今天我们就一起来看看eval函数对数组的操作及php 如何禁用eval() 函数: <?php $ ...
- php中危险的木马函数-eval()函数
eval() 函数可将字符串转换为代码执行,并返回一个或多个值. 如果eval函数在执行时遇到错误,则抛出异常给调用者. 类似的函数是loadcode ,loadcode并不立即执行代码,而是返回一个 ...
- PHP中eval函数的危害与正确禁用方法
其实 eval()是无法用php.ini中的 disable_functions禁止掉的 :eval是zend的,因此不是PHP_FUNCTION 函数: 如果想禁掉eval可以用php的扩展 Suh ...
- disable_functions(禁用php函数)
我们怎么来设置php禁止运行的函数呢? 其实,我们可以在php.ini文件进行设置,如图
- JS eval()函数的一些见解
一.eval是基本使用规则 1 eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码. 2 eval(string) 3 string必需.要计算的字符串,其中含有要计算的 ...
- 浅谈JavaScript eval() 函数
用js的人都应该知道eval()函数吧,虽然该函数用的极少,但它却功能强大,那么问题来了,为什么不常用呢?原因很简单,因为eval()函数是动态的执行其中的字符串,里面有可能是脚本,那么这样的话就有可 ...
- [转]javascript eval函数解析json数据时为什加上圆括号eval("("+data+")")
javascript eval函数解析json数据时为什么 加上圆括号?为什么要 eval这里要添加 “("("+data+")");//”呢? 原因在于: ...
- JavaScript的eval函数
eval() 函数可将字符串转换为代码执行,并返回一个或多个值 函数原型为: 返回值 = eval( codeString ) 函数说明: 如果eval函数在执行时遇到错误,则抛出异常给调用者. 类似 ...
- python笔记-调用eval函数出现invalid syntax错误
本来是想打算使用eval函数对变量进行赋值的,没想到出现了invalid syntax错误.源代码如下 In [2]: eval('a = 1') File "<string>& ...
随机推荐
- ButterKnife-5.1.2.jar(较低版本的ButterKnife)使用方法
ButterKnife注解是编译时注解,Xutils是运行时注解.很明显编译时注解性能更高 一.先配置好环境 1.在工程上右键,选Properties,然后选Java Compiler,选Annota ...
- windows 系统注册dll文件
使用管理员身份注册:命令提示符 管理员身份运行 32 位系统:regsvr32 %windir%\system32\jscript.dll 64 位系统:regsvr32 %windir%\SysWO ...
- 关于SVN 提交一半卡死的问题
解决方案 1:将项目刷新一下 2:然后在到 project - clean 一下项目 3:之后提交svn 不过暂时不能确认 要等下方进度条的 svn更新状态完成 在点击确认进行提交 4:Buildin ...
- CentOS/RHEL 7中的firewall控制
从CentOS/RHEL 7开始firewall的使用.很多人卸载了firewall重装iptables.但是有时候只是为了开放端口什么的,没有那个闲工夫卸载重装: 永久打开一个新端口(如TCP/80 ...
- HDU 2444 The Accomodation of Students(二分图判定+最大匹配)
这是一个基础的二分图,题意比较好理解,给出n个人,其中有m对互不了解的人,先让我们判断能不能把这n对分成两部分,这就用到的二分图的判断方法了,二分图是没有由奇数条边构成环的图,这里用bfs染色法就可以 ...
- 自动获取访客QQ
http://jerring.cn/bizqq/index.html http://www.oicqzone.com/qqjiqiao/2015072322139.html
- makefile里有哪些target?
make help or grep ^[a-z].*\:$ Makefile | sed s,:,,g
- office加载项部署清单签名的证书或其位置不受信任
异常信息: System.Security.SecurityException: 此应用程序中的自定义功能将不起作用,原因是用于为 BIMT写作指导 的部署清单签名的证书或其位置不受信任.请向管理员寻 ...
- hibernate---树状映射
总公司--分公司1, 分公司2 分公司1: 分公司1下部门1, 分公司1下部门2 分公司2: Org.java: package com.bjsxt.hibernate; import java.ut ...
- jquery如何判断元素是否被点击_百度知道
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 <div id="parent"> <a id="a1" ...