3

Divide By Zero除数有可能为零缺陷是如何产生的?

 2 years ago
source link: https://www.secpulse.com/archives/172882.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

Divide By Zero除数有可能为零缺陷是如何产生的?

一、除数可能为零缺陷

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

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

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

02 为什么会出现除数可能为零?

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

二、除数为零造成影响及解决方法

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

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

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

出现以上情况,在不确定分母是否为0的情况下,需要先对分母进行判断,以保证不存在除数为零的可能性。

三、除数有可能为零样例展示:

05 除数有可能为零缺陷样例 (Date类中的大部分方法都已经被Calendar类中的方法所取代):

  1.jpg

静态代码安全检测工具检测上述程序代码,则可以发现代码中存在着“除数有可能为零” 导致的代码缺陷,如下图:

2.jpg

本文作者:中科天齐软件安全

本文为安全脉搏专栏作者发布,转载请注明:https://www.secpulse.com/archives/172882.html


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK