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 |