ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

代码安全课堂丨第八期:Switch中缺少default导致的代码缺陷漏洞

2021-04-27 12:01:12  阅读:152  来源: 互联网

标签:语句 case default 代码 Switch break switch


1、什么是Switch中缺少default导致的代码缺陷?

switch用在编程中,如C语言中它经常跟case一起使用,是一个判断选择逻辑结构。其功能就是控制流程流转。switch语句的语法如下(switch,case,break和default是关键字):

switch ( 变量表达式 )

{

case 常量1 :语句;break;

case 常量2 :语句;break;

case 常量3 :语句;break;

...

case 常量n:语句;break;

default :语句;break;

}

当变量表达式所表达的量与其中一个case语句中的常量相符时,就执行此case语句后面的语句,并依次下去执行后面所有case语句中的语句,遇到break则中断并跳出当前case分支执行语句。如果常量表达式的量与所有case语句的常量值都不相符,则执行default语句中的语句。

那代码在switch语句中没有default语句,这可能会导致复杂的逻辑问题并由此产生安全隐患。此缺陷代表了软件开发中的常见问题,其中并非所有可能的变量值都由给定过程考虑或处理。因此,根据不良信息做出进一步的决策,并导致级联故障。这种级联故障可能会导致许多安全问题,并构成系统中的重大故障。

 

2、Switch中缺少default导致的代码缺陷构成条件有哪些?

①switch语句没有default情况。

 

3、Switch中缺少default导致的代码缺陷会造成哪些后果?

关键字:改变程序执行逻辑;

①当switch中的逻辑进行数据检查等,攻击者可以注入不执行任何case分支的数据,则攻击者可以绕过安全检查,或导致程序处理逻辑上错误。

 

4、Switch中缺少default导致的缺陷防范和修补方法有哪些?

①switch语句中应该添加default标签;

②在一些情况下,default应该作为检查无效输入的情况,而不应该作为一个表示假定的选项。

 

5、Switch中缺少default导致的漏洞样例:

标签:语句,case,default,代码,Switch,break,switch
来源: https://www.cnblogs.com/zktq/p/14708297.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有