使用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。

$str = 'nabi<' . (int) $_GET['hackme'];

安全性为零。。。传递给hackme的每个代码都将被执行。

最新更新