我知道,只要有用户输入,有些人可能只会回答“从不”.但是假设我有这样的事情:
$version = $_REQUEST['version'];
$test = 'return $version > 3;';
$success = eval($test);
这显然是一种简化的情况,但是用户是否可以输入任何内容作为版本来进行恶意处理?如果我限制$test在比较某些变量的值和其他变量的值时可以采用的字符串类型,那么有人可以看到有什么方法可以利用该字符串吗?
编辑
我尝试在服务器上运行以下脚本,但没有任何反应:
<?PHP
$version = "exec('mkdir test') + 4";
$teststr = '$version > 3;';
$result = eval('return ' . $teststr);
var_dump($result);
?>
我得到的只是bool(false).没有创建新目录.如果我之前有一行实际调用exec(‘mkdir test’)的行,则实际上会创建目录.它似乎工作正常,因为它只是将转换为数字的字符串与另一个数字进行比较,发现结果为假.
解决方法:
如果您这样做.只接受整数.
如果必须接受字符串,则不要.
如果您仍然认为必须这样做.别!
最后,如果仍然如此,则认为您需要字符串.只是不要!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。