Division by Zero(0으로 나누기)

2023. 1. 17. 06:01지식정리

Divison By Zero

0으로 나누기
업무상 접하는 오류이다. 어플리케이션 평균 시간을 측정할 때 쓰일 수 있다. 이전 언어를 배울 때 약식으로 계산기 프로그램을 만드는데, 그 때 접했었을 수도 있다. 하지만, 기본적인 문제를 간과하는 바보같은 실수는 누구든지 어디든지 발생할 수 있다.

취약점

0으로 나누기는 수학적으로 정의되어 있지 않다. 0을 제수로 나누기를 시도시 CPU 레벨에서 예외가 발생하고, 프로그램의 비정상 적인 종료 혹은 DoS(Denial of Service)를 유발 할 수 있다.

해결법

나누기 연산에 대해 나누는 수가 0인지 체크하는 코드를 작성해서 입력값의 유효성을 검증한다. 예외처리를 통해 해당 케이스를 공통적으로 처리할 수 있다.

if( numberOfSomething == 0){  
throw ArithmeticException;  
}  

실제 사례

someObject.computeAverageTime(1, 0);  

레퍼런스

  • CERT-JAVA : NUM02-J
  • CWE : CWE-369
  • OWASP : Denial of Service

'지식정리' 카테고리의 다른 글

Path Manipulation  (2) 2023.01.17
7. CSS  (0) 2022.05.20
6. Browser는 어떻게 동작하는가?  (0) 2022.05.15
5. Domain name이란?  (0) 2022.05.13
4. Web Hosting이란?  (0) 2022.05.12