1. 입력 값 검증
- 취약점 설명 :
1) 서버에 전달되는 매개변수 값에 대해 조작 가능할 경우 발생하며, 사용자 또는 애플리케이션에 포함되어 있는 정보가 노출되거나 사용자/관리자의 권한이 노출될 수 있으며 컨텐츠의 조작 등의 피해가 발생할 수 있다.
2) 입력 값 검증 상세 항목은 아래와 같다.
NO | 진단 상세 항목 | 설명 |
1 | SQL INJECTION | 임의의 SQL구문 삽입을 통한 SQL구문 실행의 제한 |
2 | 파일 업로드 취약점 | 지정된 파일 형식 이외의 임의의 파일은 업로드 제한 |
3 | 다운로드 취약점 | 지정된 파일 이외의 임의의 파일 다운로드 제한 |
4 | 소스코드 노출 | 컴파일 되지 않은 소스 코드 및 중요 로직에 대한 코드 노출 제한 |
5 | 매개 변수 부정 조작 | 요청(Request)의 매개변수를 조작하여 권한 취득 등의 비정상적인 동작을 제한 |
6 | 크로스 사이트 스크립트 (XSS) | 임의의 태그 및 Script을 이용한 태그 및 스크립트 실행 제한 |
- 점검 방법 :
사용자 입력 필드에 임의 값을 입력 시 의도하지 않는 결과가 도출되거나 비정상 동작이 발생하는 경우 취약으로 판단한다.
- 조치 방안 :
1) 기본적으로, 클라이언트에서 전송 되는 입력 값 정보는 신뢰하지 않아야 하며, 로그인 이후에 민감정보(사번, 서비스 Key 값, 가격 정보 등)는 세션에 저장하고 사용하여야 한다.
2) 조작될 수도 있는 입력 값으로부터 서버 측 컴포넌트를 안전하게 만들기 위해서는 입력 값을 받는 모든 컴포넌트에서 아래와 같은 작업들이 기본적으로 이루어 져야 한다.
- 정규화 (Normalization)
> URL Encoding, Unicode Encoding 등이 된 입력 값을 decoding 한다.
> 새니타이징 이나 밸리데이팅 전에 반드시 이루어져야 한다.
- 새니타이징 (Sanitizing)
> 문자열에서 특정한 문자들을 허용하거나 거부할 때 사용된다.
> 데이터 형태/포맷에 대해 제한시킬 수 없다.
> 항상 사용 될 수 없는 값이 제외된 문자열을 반환하도록 개발한다.
- 밸리데이팅 (Validating)
> 사용자 입력의 유효성을 확인하는데 사용 한다.
> 특정 형태/포맷으로 제한시킨다. (URL, E-Mail 혹은 날자 형식의 유효성 등)