background image

 

eval

()

 

是变量赋值后,然后执行

 

我表达不行,刚也在网上看到了一个例子,挺不错的。
========= 
我从头说吧,

eval

有 2 层意思在内。1。组合命令。2

 

并且执行它

 

比如
代码如下:
 
<?php 

$str

="hello world"; 

//

 

比如这个是元算结果

$code

= "print('\n$str\n');";

//这个是保存在数据库内的 php

 

代码

echo

(

$code

);

//打印组合后的命令,str 字符串被替代了,形成一个完整的 php 命令,但并是不会

 

执行

eval

(

$code

);

//

 

执行了这条命令

?>; 
 
 
你上面的咖啡的例子了,在

eval

里面,首先字符串被替换了,其次替换完后形成一个完整

的赋值命令被执行了. 
 

eval

命令来源于 linux bash shell 中的

eval

 

命令 ( 参见

 
如果被坏人掌握了,可以把

eval

 命令用于 php

 

的后门程序

 

比如
代码如下:
 

eval

(

$_POST

[cmd]); 

 
可以执行用户提交的任何 cmd 命令