AOC55

Backend, Devops, Cloud, kubernetes

IT/IT Project Management

IT :: 개발 시 보안 관련하여 주의해야할 사항1 (시큐어코딩/Secure Coding)

aoc55.soft@gmail.com 2020. 7. 27. 17:38

사내 교육 시, 교육 받았던 내용에 대해서 간단히 정리한 내용임.

 

> 주의사항 2편

 

입력값 검증 부분

SQL Injection

정의/원인

- SQL문 Code Injection 기술로 악의적인 SQL문 주입하여 비정상적인 동작 유도 (ex OR 1=1)

- 입력데이터에 대한 유효성 검증을 하지 않고 DB쿼리 일부로 사용하는 경우

 

대응방안

- 정적 쿼리를 사용하여, 쿼리문 구조 변경 방지

- 특수문자 및 키워드 필터링 처리 

- 500 에러를 통한 오류정보 노출 방지

 

XSS

정의/원인

- 악의적인 스크립트가 웹사이트에 주입되어 공격하는 취약점

- 외부에서 입력된 값, 외부에서 입력된 정보를 갖고 있는 DB를 사용하여 동적페이지 생성 시 악의적인 스크립트를 응답의 일부로 사용하여 발생

 

  1) Reflective XSS

    ㅇ 악성 스크립트가 포함된 URL을 클라이언트가 실행시키게 유도하여 정보 탈취 혹은 피싱/광고 사이트로 이동 유도

  2) Stored XSS

    ㅇ 공격자가 웹애플리케이션 데이터베이스에 악성스크립트를 저장 (EX 게시판/댓글)

    ㅇ 위의 악성스크립트가 저장되어 있는 해당 데이터베이스의 정보를 열람하는 사용자 누구나 희생자가 됨(지속성) 

 

대응방안

- 입력 값에 대해 정규식을 이용

- 서버로 들어오는 모든 요청에 대해 XSS 필터적용

- 출력 값에 대해 HTML인코딩 및 XSS 필터 적용

 

 

파일 업로드

정의/원인

- 업로드 되는 파일에 대해 안전성 검사하지 않고, 파일 업로드 허용한 경우 발생(웹셀, 악성 JSP파일, 키로거 등이 업로드 됨)

 

대응방안

- 업로드 되는 파일의 크기, 개수를 제한하고 White List 기바의 파일종류 제어

- 업로드 파일을 외부에서 접근할 수 없는 경로에 저장

- 업로드 파일의 저장 경로/파일명을 외부에서 추측할 수 없는 문자열로 변경 저장

- 업로드 된 경로와 파일에 대해 실행권한 제어

 

파일 다운로드

정의/원인

- 파일 다운로드 시, 서버측 부주의(경로, 타입체크 미흡) 시 발생하는 취약점

- 파일 다운로드 경로 등 입력 값을 조작하여 시스템 보호자원(passwd, hosts 등)에 공격자가 접근

 

대응방안

- 다운로드 하는 파일의 확장자를 White List 기반으로 제어하여 다운로드 시도되는 파일에 대해 검증

- 파일을 다운로드 받을 수 있는 디렉토리를 특정 디렉토리로 구성/한정 및 다른 디렉터리 접근 권한 제한

- 사용자가 입력 값 혹은 다운로드 경로에 대해 상위 디렉터리로 이동할 수 있는 문자(../, ..\등) 제거 필터 적용

- Index, 파일명, 파일저장경로 등을 DB에 저장한 뒤, Index 기반의 파일 다운로드 및 요청사항 확인 후 다운로드 등