< 시큐어 코딩 가이드 >
- 입력데이터 검증 및 표현
- 프로그램 입력값에 대한 검증 누락 부적절한 검증 잘못된 형식 지정
- 사용자 프로그램 입력데이터에 대한 유효성 검증체계를 수립하고 실패 시 처리 설계 및 구현
- 보안 기능
- 보안 기능의 부적절한 구현
- 인증 접근 통제 권한 관리 비밀번호 등의 정책이 적절하게 반영되도록 설계 및 구현
- 시간 및 상태
- 거의 동시에 수행 지원하는 병렬 시스템 또는 하나 이상의 프로세스가 동작하는 환경에서 시간 및 상태의 부적절한 관리
- 공유 자원의 접근 직렬화, 병렬 실행 가능 프레임워크 사용, 블록문 내에서만 재귀함수 호출
- 에러 처리
- 에러 미처리, 불충분한 처리 등으로 에러 메시지에 중요정보가 포함
- 에러 또는 오류 상황을 처리하지 않거나 불충분하게 처리되어 중요정보 유출 등 보안 약점이 발생하지 않도록 시스템 설계 및 구현
- 코드 오류
- 개발자가 범할 수 있는 코딩 오류로 인해 유발
- 코딩 규칙 도출 후 검증 가능한 스크립트 구성과 경고 순위의 최상향 조정 후 경고 메시지 코드 제거
- 캡슐화
- 기능성이 불충분한 캡슐화로 인해 인가되지 않은 사용자에게 데이터 누출
- 디버그 코드 제거와 필수 정보 외릐 클래스 내 프라이빗 접근자 지정
- API 오용
- 의도된 사용에 반하는 방법으로 API를 사용하거나, 보안에 취약한 API의 사용
- 개발 언어별 취약 API 확보 및 취약 API 검출 프로그램 사용
< 입력 데이터 검증 및 표현 >
- 입력 데이터로 인해 발생하는 문제들을 예방하기 위해 구현 단계에서 검증해야 하는 보안 점검 항목
< 입력 데이터 검증 및 표현 취약점 >
- XSS (Cross Site Script)
- 검증되지 않은 외부 입력 데이터가 포함된 웹페이지가 전송되는 경우, 사용자가 해당 웹페이지를 열람함으로써 웹페이지에 포함된 부적절한 스크립트가 실행되는 공격
- 특수문자 등록을 방지하기 위해 특수문자 필터링
- HTML 태그 사용 금지
- 자바스크립트로 시작하는 문자열은 모두 문자열 반환 처리
- SQL 삽입 (Injection)
- 응용 프로그램의 보안 취약점을 이용해서 악의적인 SQL 구문을 삽입, 실행시켜서 DB의 접근을 통해 정보를 탈취하거나 조작등의 행위를 하는 공격 기법
- 바인딩 매개변수 방식 적용하여 사전에 변수 타입을 명시적으로 지정
- 사용자로부터 입력될 수 있는 모든 값을 체크하여 필터링
- Servlet Filter 기능 적용
< 재해 복구 시간 (RTO; Recovery Time Objective) >
- 정보시스템 운영 중 서버가 다운되거나 자연재해나 시스템장애 등 비상사태 또는 업무 중단 시점부터 업무가 복구되어 다시 정상 가동될 때까지의 시간