소프트웨어 개발 보안 구축
SW개발 보안 설계
입력데이터 검증 및 표현의 개념
- 폼 양식의 입력란을 통해 입력되는 데이터로 인해 발생하는 문제들을 예방하기 위해 구현 단계에서 검증해야 하는 보안 점검 항목들
- 입력 데이터로 인해 발생하는 문제를 예방하기 위해서 소프트웨어개발의 구현 단계에서 유효성 검증 체계를 갖추고, 검증되지 않은 데이터가 입력되는 경우 이를 처리할 수 있도록 구현해야 함
- 입력 데이터를 처리하는 객체에 지정된 자료형이 올바른지 확인하고 일관된 언어셋(Character Set)을 사용하도록 코딩 함
- Character Set
- 컴퓨터에서 처리하기 위해 사용하는 코드표를 의미
- ASCII
- Unicode
- UTF-8
- Character Set
입력데이터 검증 및 보안 약점 종류
- SQL
- 입력란에 SQL을 삽입하며 무단으로 DB를 조회하거나 조작하는 보안 약점
- 동적 쿼리에 사용되는 입력 데이터에 예약어 및 특수문자가 입력되지 않게 필터링 되도록 방지
- 동적쿼리
- 질의어 코드를 문자열 변수에 넣어 조건에 따라 질의를 동적으로 변경하여 처리하는 방식
- 동적쿼리
- XSS 크로스사이트 스크립트
- 웹페이지에 악의적인 스크립트를 삽입하여 방문자들의 정보를 탈취하거나 비정상적인 기능 수행을 유발하는 보안 약점
- HTML 태그의 사용을 제한하거나 스크립트에 삽입되지 않도록 ‘<’, ‘>’ 등의 문자를 다른 문자로 치환함으로써 방지
- 위험한 형식 파일 업로드
- 악의적인 명령어가 포함된 스크립트 파일을 업로드함으로써 시스템에 손상을 주거나 시스템을 제어할 수 있는 보안 약점
- 업로드 되는 파일의 확장자 제한, 파일명의 암호화, 웹사이트와 파일 서버 경로 분리, 실행 속성을 제거하는 드으이 방법으로 방지
- 경로 조작 및 자원 삽입
- 데이터 입출력 경로를 조작하여 서버 자원을 수정/삭제할 수 있는 보안 약점
- 사용자 입력값을 식별자로 사용하는 경우, 경로 순회 공격을 막는 필터를 사용하여 방지
- 경로 순회
- 경로를 탐색할때 사용하는 ‘/’, ‘’ 등의 기호를 악용하여 허가되지 않은 파일에 접근하는 방식
- 경로 순회