PHP的一個EVAL的利用防范
作者:phpeval
前段時間一個程序出的問題。就和這差不多。
<?php
$code="${${eval($_GET[c])}}";
?>
對于上面的代碼。如果在URL提交http://www.phpeval.cn/test.php?c=phpinfo(); 就可以發(fā)現(xiàn)phpinfo()被執(zhí)行了。而相應的提交c=echo 11111; 發(fā)現(xiàn)1111也被輸出了。這個代碼被執(zhí)行了。
(好些PHP的代碼在寫文件的時候。都沒有注意到這一點。他們在代碼中寫php的文件的時候。把代碼加在雙引號之內(nèi)。然后過濾掉雙引號。認為這樣就不能執(zhí)行了。實際上是可以的。)
還有一些利用方式,比如:
<?php
$code=addslashes($_GET[c]);
eval(""$code"");
?>
提交 http://www.site.cn/test.php?c=${${phpinfo()}}; phpinfo()就被執(zhí)行。如果提交
http://www.site.cn/test.php?c=${${eval($_GET[d])}};&d=phpinfo();
這樣的話,d后面的代碼也被執(zhí)行。
解決方法:
eval函數(shù)減弱了你的應用的安全性,因為它給被求值的文本賦予了太多的權力。強烈建議不要使用eval函數(shù)。
版權聲明:本站文章來源標注為YINGSOO的內(nèi)容版權均為本站所有,歡迎引用、轉載,請保持原文完整并注明來源及原文鏈接。禁止復制或仿造本網(wǎng)站,禁止在非maisonbaluchon.cn所屬的服務器上建立鏡像,否則將依法追究法律責任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學習參考,不代表本站立場,如有內(nèi)容涉嫌侵權,請聯(lián)系alex-e#qq.com處理。
關注官方微信