PHP的一个EVAL的利用防范
作者:phpeval
前段时间一个程序出的问题。就和这差不多。
复制代码
代码如下:<?php
$code="${${eval($_GET[c])}}";
?>
对于上面的代码。如果在URL提交http://www.phpeval.cn/test.php?c=phpinfo(); 就可以发现phpinfo()被执行了。而相应的提交c=echo 11111; 发现1111也被输出了。这个代码被执行了。
(好些PHP的代码在写文件的时候。都没有注意到这一点。他们在代码中写php的文件的时候。把代码加在双引号之内。然后过滤掉双引号。认为这样就不能执行了。实际上是可以的。)
还有一些利用方式,比如:
复制代码
代码如下:<?php
$code=addslashes($_GET[c]);
eval(""$code"");
?>
提交 http://www.site.cn/test.php?c=${${phpinfo()}}; phpinfo()就被执行。如果提交
http://www.site.cn/test.php?c=${${eval($_GET[d])}};&d=phpinfo();
这样的话,d后面的代码也被执行。
解决方法:
eval函数减弱了你的应用的安全性,因为它给被求值的文本赋予了太多的权力。强烈建议不要使用eval函数。
相关推荐
宿舍 2020-07-27
amazingbo 2020-07-21
wordmhg 2020-06-26
seanzed 2020-06-14
linxner 2020-05-18
ThinkingLink 2020-05-16
fansenjun 2020-03-01
赵家小少爷 2020-05-11
jessieHJ 2020-05-03
码农成长记 2020-04-19
Dreamhome 2020-04-16
巴壁虎 2020-03-03
amberom 2020-02-25
higheels 2020-02-18
JamesRayMurphy 2020-02-09
jyli 2020-01-21
容数据服务集结号 2020-01-17