使用PHP eval进行字符串数学运算的风险 [英] Risks of using PHP eval for string math

查看:118
本文介绍了使用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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆