본문 바로가기
공부/KISA

웹 서비스 요청 및 결과 검증 - KISA 소프트웨어 개발 보안 가이드

by Skogkatt의 개인 블로그 2020. 7. 9.
반응형

https://www.kisa.or.kr/public/laws/laws3.jsp

 

기술안내서 가이드 < 관련법령·기술안내서 < 자료실 : 한국인터넷진흥원

기술안내서 가이드 한국인터넷진흥원 기술안내서 가이드 입니다. 게시판 목록 보기 기술안내서 가이드 표 대분류 소분류 기술안내서 가이드 대상 수준 인터넷 진흥 및 이용 활성화 인터넷 진흥

www.kisa.or.kr


분석∙설계단계 SW 보안강화 - 설계보안항목 정의 및 설계 시 고려 사항 - 웹 서비스 요청 및 결과 검증

설명

  • 웹 서비스(게시판 등) 요청(스크립트 게시 등)과 응답 결과(스크립트 포함 웹 페이지 등)에 대한 검증 방법과 적절하지 않은 데이터에 대한 처리방법을 설계해야 한다.

설계항목내용

  • 사용자로부터 입력받은 값을 동적으로 생성되는 응답 페이지에 사용하는 경우 크로스 사이트 스크립트(XSS) 필터링을 수행한 뒤 사용해야 한다.
  • DB 조회 결과를 동적으로 생성되는 응답 페이지에 사용하는 경우 HTML 인코딩 또는 크로스 사이트 스크립트(XSS) 필터링을 수행한 뒤 사용해야 한다.

가. 취약점 개요

사례 1: 외부 입력값을 검증 없이 응답 페이지 생성에 사용하는 경우
  • 웹 페이지에 악의적인 스크립트를 포함시켜 웹페이지를 열람하는 접속자의 권한으로 부적절한 스크립트가 수행되어 정보유출 등의 공격을 유발할 수 있다.
사례 2: DB에 저장된 값을 검증 없이 응답 페이지 생성에 사용하는 경우
  • 공격자가 미리 취약한 서버에 악의적인 스크립트가 포함된 정보를 저장해서 일반 사용자들이 해당 정보를 조회하는 경우 접속자의 권한으로 부적절한 스크립트가 수행되어 정보 유출 등의 공격을 유발할 수 있다.

 

나. 설계 시 고려사항

1. 사용자로부터 입력받은 값을 동적으로 생성되는 응답 페이지에 사용하는 경우 크로스 사이트 스크립트(XSS) 필터링을 수행한 뒤 사용해야 한다.

  • 입력값에 대해 필터링 또는 인코딩 정책을 적용하는 공통 코드를 작성하여 웹 컨테이너, 또는 MVC 프레임워크에 적용한다.
(ㄱ) 필터를 이용한 입력값 검증
  • 웹 컴포넌트인 Filter를 사용하여 사용자의 입력값에 대해 XSS 필터나 HTML 인코딩을 적용하여 안전한 값으로 치환한 뒤 사용할 수 있도록 모든 애플리케이션에 일괄 적용한다.
(ㄴ) 인터셉트를 이용한 입력값 검증
  • MVC프레임워크를 사용하는 경우 Interceptor 컴포넌트를 사용하여 사용자의 입력값에 대해 XSS 공격 패턴의 문자열이 포함되었는지를 검사하여 요청을 차단 또는 허용하는 정책을 모든 애플리케이션에 일괄 적용한다.
(ㄷ) 라이브러리 또는 Validator 컴포넌트를 이용한 입력값 검증
  • 공통 코드로 입력값을 검증하는 Validator 컴포넌트를 작성하여 XSS 공격 패턴의 사용자 입력값을 필터링할 수 있도록 설계한다.

 

2. DB 조회 결과를 동적으로 생성되는 응답 페이지에 사용하는 경우 HTML 인코딩 또는 크로스 사이트 스크립트(XSS) 필터링을 수행한 뒤 사용해야 한다.

  • 각각의 컴포넌트에서 출력 값에 대해 XSS필터 또는 HTML 인코딩을 적용하여 안전한 값만 응답에 사용한다.
(ㄱ) View 컴포넌트에서 출력 값에 대해 HTML 인코딩 적용
  • View 컴포넌트에서 사용자 입력값을 동적으로 생성되는 응답 페이지에 사용하는 경우 XSS필터 또는 HTML 인코딩을 적용하여 코드를 작성하도록 시큐어코딩 규칙을 정의한다.
(ㄴ) DB 조회 결괏값에 대한 XSS 필터 적용
  • DB 조회 결괏값으로 응답 페이지를 생성하는 경우 XSS 필터를 적용하여 사용해야 한다.
  • DB에서 읽어오는 데이터도 외부 입력값의 범위에 포함시켜, 응답 페이지에 출력하기 전에 반드시 검증작업을 수행해야 한다.
  • DB에서 읽어온 값에 대한 검증작업을 프레임워크의 컴포넌트로 일괄 필터링하는 것이 쉽지 않다. 이 경우 각 개발자들은 출력 값에 대해 검증 작업을 수행해야 하는데, 이러한 설정은 개발 가이드 구현 단계에 항목을 작성하여 적용할 수 있도록 해야 한다.
  • HTML, URL 등의 문자를 인코딩 및 필터링하여 XSS 취약점을 최소화할 수 있도록 다음과 같은 라이브 러리의 사용을 고려할 수 있다.

 


참고자료

반응형

댓글