[시큐어코딩 가이드] 부적절한 예외 처리
- 정보보안/시큐어코딩 가이드
- 2022. 8. 12.
■ 에러처리
에러를 처리하지 않거나, 불충분하게 처리하여 에러 정보에 중요정보(시스템 내부정보 등)가 포함될 때, 발생할 수 있는 취약점으로 에러를 부적절하게 처리하여 발생하는 보안약점이다.
부적절한 예외 처리
■ 개요
프로그램 수행 중에 함수의 결과 값에 대한 적절한 처리 또는 예외 상황에 대한 조건을 적절하게 검사 하지 않을 경우, 예기치 않은 문제를 야기할 수 있다.
■ 안전한 코딩 기법
값을 반환하는 모든 함수의 결과값을 검사하여, 그 값이 의도했던 값인지 검사하고, 예외 처리를 사용 하는 경우에 광범위한 예외 처리 대신 구체적인 예외 처리를 수행한다.
코드예제
다음 예제는 다양한 예외가 발생할 수 있음에도 불구하고 광범위한 예외 처리로 예외상황에 따른 적절한 조치를 처리 할 수 없다.
안전하지 않은 코드의 예 |
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.") |