부적절한 예외 처리 정의 프로그램 수행 중에 함수의 결과 값에 대한 적절한 처리 또는 예외 상황에 대한 조건을 적절하게 검사하지 않을 경우, 예기치 않은 문제를 야기할 수 있습니다. 안전한 코딩기법 값을 반환하는 모든 함수의 결괏값을 검사해야 합니다. 결괏값이 개발자가 의도했던 값인지 검사하고, 예외처리를 사용하는 경우, 구체적인 예외처리를 수행해야 합니다. 코드예제 다음은 안전하지 않은 코드예제로, 다양한 예외가 발생할 수 있음에도 불구하고 광범위한 예외처리로 예외상황에 따른 적절한 조지가 부적절한 상황을 보여주는 코드입니다. #부적절한 예외 처리(안전X) def get_content_bad(): try: f = open('fruit.txt') s = f.readline() i = int(s.strip..
오류상황 대응 부재 정의 오류가 발생할 수 있는 부분을 확인하였으나, 오류에 대해 예외처리를 하지 않을 경우, 공격자는 오류 상황을 악용해 개발자가 의도하지 않은 방향으로 프로그램이 동작하도록 할 수 있습니다. 안전한 코딩기법 오류가 발생할 수 있는 부분에 대하여 try-except문을 사용하여 예외처리를 해야 합니다. 코드예제 다음은 안전하지 않은 코드예제입니다. try문에서 오류를 포착하고 있지만, 그 오류에 대해 아무 조치를 하지 않는 상황을 보여주는 코드입니다. #오류상황 대응 부재(안전X) def error_test_bad(request): try: num = int(request.GET.get('num') or 1) print(f'{100/num}') except ZeroDivisionErro..
에러처리 에러를 처리하지 않거나, 불충분하게 처리하여 에러정보에 중요정보(시스템 내부정보 등)가 포함될 때, 발생할 수 있는 보안약점이다. 오류 메시지 정보노출 정의 응용 프로그램이 실행환경, 사용자 등 관련 데이터에 대한 민감한 정보를 포함하는 오류 메시지를 생성해 외부에 제공하는 경우, 공격자의 악성 행위로 이어질 수 있습니다. 예외발생 시 예외이름이나 추적 메시지를 출력하는 경우, 프로그램 내부 구조를 쉽게 파악할 수 있기 때문입니다. 안전한 코딩기법 오류 메시지는 정해진 사용자에게 유용한 최소한의 정보만 포함하도록 합니다. 소스코드에서 예외상황은 내부적으로 처리하고 사용자에게 민감한 정보를 포함하는 오류를 출력하지 않고 미리 정의된 메시지를 제공하도록 설정해야 합니다. 코드예제 사용자 요청을 정상..