PHP安全之道之switch比较缺陷

作者: 温新

分类: 【PHP基础】

阅读: 2198

时间: 2020-10-11 13:41:01

当在switch中使用case判断数字时,switch会将其中的参数转换为int类型进行计算。

$num = '2www.ziruchu.com';
switch ($num) {
	case 0:
		echo '你被转为了数字,我是0';
	break;
	case 1:
		echo '你被转为了数字,我是1';
	break;
	case 2:
		echo '你被转为了数字,我是2';
	break;
	default:
		echo '你是谁?~~~';
}

上述代码结果输出了‘你被转为了数字,我是2’。

【解决之道】判断数据的合法性,对不合法的数据即使进行阻断。

$num = '2www.ziruchu.com';

if (!is_numeric($num)) {
	die('类型错误,非法访问!');
}

switch ($num) {
	case 0:
		echo '你被转为了数字,我是0';
	break;
	case 1:
		echo '你被转为了数字,我是1';
	break;
	case 2:
		echo '你被转为了数字,我是2';
	break;
	default:
		echo '你是谁?~~~';
}

2020-10-11

请登录后再评论