【悟空云课堂】第九期:switch中省略了break语句导致的代码缺陷

关注公众号“中科天齐软件安全中心”(id:woocoom),一起涨知识!

该栏目为中科天齐全新规划的悟空云课堂,每周五下午18:00准时上线,旨在科普软件安全相关知识,助力企业有效防范软件安全漏洞,提升网络安全防护能力。

【悟空云课堂】第九期:switch中省略了break语句导致的代码缺陷

什么是switch中省略了break语句导致的代码缺陷?

break语句通常用在循环语句和switch语句中。当break用于switch语句中时,可使程序跳出switch而执行switch以后的语句;如果没有break语句,则会从满足条件的地方(即与switch(表达式)括号中表达式匹配的case)开始执行,直到switch结构结束。

如果程序在switch或类似构造中省略了break语句,则会导致多个条件相关联的代码被执行。当程序员只打算执行与一个条件相关的代码时,这可能会引起问题,可能导致关键代码在不该执行的情况下执行。

switch中省略了break语句导致的代码缺陷构成条件有哪些?

1、switch语句的catch块中没有break指令。

switch中省略了break语句导致的代码缺陷会造成哪些后果?

关键字:改变执行逻辑

可能导致执行意外的辑和其他意外的应用程序行为。

switch中省略了break语句导致的缺陷防范和修补方法有哪些?

1、略一个break语句会导致用户无法区分是忘记编写break语句还是开发人员故意为之。如果确认是故意使两种情况以上使用同一种处理逻辑,确保逻辑正确。
2、使用if语句替代该功能,这更安全。

switch中省略了break语句导致的漏洞样例:

public static void printMessage (int month){
switch (month) {

case 1: System.out.println ("January");
case 2: System.out.println ("February");
case 3: System.out.println ("March");
case 4: System.out.println ("April");
case 5: System.out.println ("May");
case 6: System.out.println ("June");
case 7: System.out.println ("July");
case 8: System.out.println ("August");
case 9: System.out.println ("September");
case 10: System.out.println ("October");
case 11: System.out.println ("November");
case 12: System.out.println ("December");
}
System.out.println (" is a great month");
}

用Wukong(悟空)软件代码安全检测修复系统检测上述程序代码,则可以发现代码中存在着switch中省略了break语句的缺陷,如下图:
WuKong(悟空)软件代码安全检测修复系统
了解更多安全资讯 请关注公众号 中科天齐软件安全中心

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值