소프트웨어 개발 보안은 소프트웨어 개발 과정에서 발생할 수 있는 보안 취약점을 최소화하여 보안 위협으로부터 안전한 소프트웨어를 개발하기 위한 일련의 보안 활동을 의미한다.
데이터의 기밀성, 무결성, 가용성을 유지하는 것을 목표로 한다.
정부에서 제공하는 소프트웨어 개발 보안 가이드를 참고하여 보안 항목들을 점검한다.
보안 요소
세션 통제 : 세션은 서버와 클라이언트의 연결을 말한다. 세션의 연결과 연결로 인해 발생하는 정보를 관리하는 것
입력 데이터 검증 및 표현 : 입력 데이터에 대한 유효성 검증체계를 갖추고, 검증 실패 시 이를 처리할 수 있도록 코딩하는 것
보안 기능 : 인증, 접근제어, 기밀성, 암호화등의 기능
시간 및 상태 : 병렬 처리 시스템이나 다수의 프로세스가 동작하는 환경에서 시간과 실행 상태를 관리하여 시스템이 원활히 동작되도록 코딩하는 것
에러처리 : 오류들을 사전에 정의하여 에러로 인해 발생하는 문제들을 예빵
코드 오류 : 형변환, 자원의 반환 등을 고려하여 코딩하는 것
캡슐화 : 데이터와 데이터를 처리하는 함수를 하나의 객체로 묶어 코딩하는 것
API 오용 : API를 잘못 사용하거나 보안에 취약한 API를 사용하지 않도록 고려하여 코딩하는 것
API는 응용 프로그램 개발 시 운영체제나 프로그래밍 언어 등에 있는 라이브러리를 이용할 수 있도록 규칙 등을 정의해 놓은 인터페이스를 의미한다.
프로그래밍 언어에서 특정한 작업을 수행하기 위해 사용하거나, 운영체제의 파일 제어, 화상 처리등의 기능을 활용하기 위해 사용한다.
개발에 필요한 여러 도구를 제공하기 때문에 이를 이용하면 원하는 기능을 쉽고 효율적으로 구현할 수 있다.
API의 종류에는 Windows API, 단일 유닉스 규격(SUS), Java API, 웹 API 등이 있으며, 누구나 무료로 사용할 수 있는 API를 Open API라고 한다.