시큐어 코딩 가이드
- 설계 및 구현 단계에서 해킹 등의 공격을 유발할 가능겅이 있는 잠재적인 보안 취약점을 사전에 제거하고, 외부 공격으로부터 안전한 소프트웨어를 개발하는 기법
- 보안 약점을 방지하기 위한 시큐어 코딩 가이드에 따른 개발 수행이 필요함
1. 입력 데이터 검증 및 표현
- 시스템이 받은 입력 데이터를 확인하여 예상된 형식과 값의 범위 내에 있는지 확인하는 과정
- 보안 강화, 오류 감소 및 데이터 무결성을 보장하기 위해 필수적
ex) 사용자 이메일 주소를 입력 받을 때, 이메일 주소 형식이 맞는지 확인
2. 보안 기능
- 시스템을 악의적인 공격으로부터 보호하기 위한 매커니즘
- 인증, 접근 제어, 기밀성, 암호화, 권한 관리 등
ex) 비밀번호를 암호화 한 후 저장
3. 시간 및 상태
- 시스템의 현재 상태와 시간을 추적하는 것
- 거의 동시에 실행하는 병렬 시스템, 하나 이상의 프로세스가 동작하는 환경에서 시간 및 상태의 부적절한 관리
- 시스템 동작, 로그 기록, 이벤트 스케줄링 등
ex) 현재 시간과 상태를 로그 파일에 기록
4. 에러 처리
- 에러 미처리, 불충분한 처리 등으로 에러 메세지에 중요정보가 포함 되는 것 관리
ex) 상세한 오류 정보는 로그 파일에 기록하고 사용자에게는 일반적인 에러 메세지 출력
5. 코드 오류
- 개발자가 범할 수 있는 코딩 오류
- 프로그램에서 발견된 버그 또는 예기치 않은 동작
ex)코딩 규칙 도출 후 검증 가능한 스크립트 구성
6. 캡슐화
- 객체의 속성과 메소드를 하나로 묶고, 외부로부터 접근을 제한하는 기법
- 데이터 무결성을 유지하고 코드의 복잡성을 줄일 수 있음
ex) 디버그 코드 제거와 private 접근자 지정
7. API 오용
- 의도된 사용에 반하는 방법으로 API 사용
- 보안에 취약한 API 사용
- 성능 저하, 보안 문제 또는 오류 초래
ex)개별 언어별 취약 API 확보 및 취약 API 검출 프로그램 사용