博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PHP中eval函数的危害与正确禁用方法
阅读量:6697 次
发布时间:2019-06-25

本文共 803 字,大约阅读时间需要 2 分钟。

其实 eval()是无法用php.ini中的 disable_functions禁止掉的 :eval是zend的,因此不是PHP_FUNCTION 函数;

如果想禁掉eval可以用php的扩展 Suhosin: 安装Suhosin后在php.ini中load进来Suhosin.so,再加上 suhosin.executor.disable_eval = on即可!

总结,php的eval函数在php中是无法禁用的,因此我们也只有使用插件了!

 

代码:

1
eval
(
"echo'hello world';"
);

上边代码等同于下边的代码:

echo"hello world";

在浏览器中都输出:hello world

运用eval()要注意几点:

1.eval函数的参数的字符串末尾一定要有分号,在最后还要另加一个分号(这个分号是php限制)

2.注意单引号,双引号和反斜杠的运用。如果参数中带有变量时,并且变量有赋值操作的话,变量前的$符号钱一定要有\来转义。如果没有赋值操作可以不需要。

代码:

1
2
$a
=100;
eval
(
"echo$a;"
);

因为没有赋值操作,所以可以不用\来转义$.等同于以下代码:

1
2
$a
=100;
eval
(
"echo\$a;"
)

3.注意在命令式字符串(包括分号)两边必须要有双引号或者根据需要用单引号。否则报错。

命令式字符串是指:字符串中包括echo、print之类的命令的时候。

如果参数只有一个变量则可以不用。例如:

1
2
3
4
5
6
7
$func
=<<<FUNC
function
test(){
  
echo
"test eval function"
;
}
FUNC;
eval
(
$func
);
test();

 

 

转载于:https://www.cnblogs.com/flzs/p/10390300.html

你可能感兴趣的文章
tomcat的class加载的优先顺序
查看>>
php课程 4-15 数组遍历、超全局数组、表单提交数据(多看学习视频)
查看>>
FindWindow用法
查看>>
Oracle SELECT INTO 和 INSERT INTO SELECT 两种表复制语句详解
查看>>
用反卷积(Deconvnet)可视化理解卷积神经网络还有使用tensorboard
查看>>
SuperMap iObject入门开发系列之五管线属性查询
查看>>
[转]简单的动态修改RDLC报表页边距和列宽的方法
查看>>
VS2010使用Release进行调试的三个必须设置选项
查看>>
安卓系统上的远程 JS 调试 Remote JavaScript Debugging on Android
查看>>
SEO艺术
查看>>
Python标准库
查看>>
SQL基础教程
查看>>
POJ 3683 Priest John's Busiest Day(2-ST)
查看>>
Why std::binary_search of std::list works, sorta ...(转载)
查看>>
一起谈.NET技术,在MVC2.0使用Lodop为WEB打印提出完美解决方案
查看>>
瑞星2009:3大拦截2大防御功能主动遏制木马病毒
查看>>
Android RIL源码研究笔记 の ril (一)
查看>>
手动添加mysql服务
查看>>
javascirpt历史澄清误解基本概念特点编程语言web2.0网页javascript - javascirpt知识大全...
查看>>
Java多线程同步Synchronized使用分析
查看>>