【悟空云课堂】第三十七期:除数有可能为零(CWE-369:DivideBy Zero)

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

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

什么是除数有可能为零缺陷?

运算操作时,除法或求余数操作容易受到除数有可能为零的影响。因此,必须在操作之前检查除法运算或求余数运算中的除数不为零。

根据除法的意义,除法是已知两个因数的积与其中一个因数,求另一个因数的运算。利用除法与乘法的互逆关系可知,如果除数为零,则:当被除数不为零,由于“任何数乘零都等于零,而不可能等于不是零的数”,此时除法算式的商不存在——即任何数的零倍都不可能为非零数;当被除数为零,即除法算式零÷零,由于“任何数乘零都等于零”,于是商可以是任何数——即任何数的零倍都等于零。为了避免以上两种情况,数学中规定“零不能做除数”。

除数有可能为零缺陷的构成条件有哪些?

运算中,除法或求余数操作时,除数没有经过测试,有可能为零。

除数有可能为零缺陷会造成哪些后果?

如果不验证除数的输入值不为零,那么这将造成一个试图除以零的异常。如果Java的异常处理没有处理此错误,则可能发生意外的结果,甚至导致崩溃。

除数有可能为零缺陷的防范和修补方法有哪些?

在进行除法或求余数操作前,对除数进行测试,以保证不存在除数为零的可能性。

除数有可能为零缺陷样例(Date类中的大部分方法都已经被Calendar类中的方法所取代):
在这里插入图片描述
用Wukong检测上述程序代码,则可以发现代码中存在着“除数有可能为零” 导致的代码缺陷,如下图:
在这里插入图片描述
除数有可能为零缺陷在CWE中被编号为CWE-369:DivideBy Zero

更多的信息请参考CWE官网:http://cwe.mitre.org/data/definitions/369

了解更多安全资讯 请关注公众号【中科天齐软件安全中心】

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值