使用PHP eval进行字符串数学运算的风险 [英] Risks of using PHP eval for string math
本文介绍了使用PHP eval进行字符串数学运算的风险的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我对 eval()
的安全风险有疑问
这是我自己的代码
<?php
$str = 'nabi<'.$_GET['hackme']; // $_GET['hackme']=2;
$str = str_replace("nabi", 1, $str);
$hmm = eval('return ('.$str.');');
if($hmm){
echo 'yeah';
}
else{
echo 'no';
}
结果将是:
yeah
我的代码运行良好
这就是我想要的!
但是我担心安全隐患!
请提供新的解决方案
推荐答案
如果您正在做的只是检查某物是否小于1 ,类型转换 $ _ GET ['hackme']
到int或double。
If all you're doing is checking if something is less than 1, typecast $_GET['hackme']
to int or double.
$str = 'nabi<' . (int) $_GET['hackme'];
这篇关于使用PHP eval进行字符串数学运算的风险的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文