[시큐어코딩 가이드] 부적절한 예외 처리

 

 

 

■ 에러처리

 

에러를 처리하지 않거나, 불충분하게 처리하여 에러 정보에 중요정보(시스템 내부정보 등)가 포함될 때, 발생할 수 있는 취약점으로 에러를 부적절하게 처리하여 발생하는 보안약점이다.

 

 

부적절한 예외 처리

 

■ 개요

 

프로그램 수행 중에 함수의 결과 값에 대한 적절한 처리 또는 예외 상황에 대한 조건을 적절하게 검사 하지 않을 경우, 예기치 않은 문제를 야기할 수 있다.

 

 

■ 안전한 코딩 기법

 

값을 반환하는 모든 함수의 결과값을 검사하여, 그 값이 의도했던 값인지 검사하고, 예외 처리를 사용 하는 경우에 광범위한 예외 처리 대신 구체적인 예외 처리를 수행한다.

 

 

코드예제

 

다음 예제는 다양한 예외가 발생할 수 있음에도 불구하고 광범위한 예외 처리로 예외상황에 따른 적절한 조치를 처리 할 수 없다.

 

안전하지 않은 코드의 예
import sys

def get_content():
try:
f = open('myfile.txt')
s = f.readline()
i = int(s.strip())
# 예외처리를 세분화 할 수 있음에도 광범위하게 사용하여 예기치 않은
# 문제가 발생할 수 있다.
except:
print("Unexpected error ")

 

발생 가능한 예외를 세분화하여 예외상황에 따라 적합한 예외를 처리한다.

 

안전한 코드의 예
def get_content():
try:
f = open('myfile.txt')
s = f.readline()
i = int(s.strip())
# 발생할 수 있는 오류의 종류와 순서에 맞춰서 예외 처리 한다.
except FileNotFoundError:
print("file is not found")
except OSError:
print("cannot open file")
except ValueError:
print("Could not convert data to an integer.")

 

 

댓글

Designed by JB FACTORY