본문 바로가기
공부/KISA

XQuery 삽입 - KISA 소프트웨어 개발 보안 가이드

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

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

 

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

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

www.kisa.or.kr


구현 단계 시큐어코딩 가이드 - 입력 데이터 검증 및 표현 - XQuery 삽입

가. 개요

  • XQuery를 사용하여 XML 데이터에 대한 동적 쿼리를 생성 시 사용되는 외부 입력값에 대해 적절한 검증절차가 존재하지 않으면 공격자가 쿼리 문의 구조를 임의로 변경할 수 있게 된다. 이로 인해 허가되지 않은 데이터를 조회하거나 인증절차를 우회할 수 있다.

나. 보안대책

  • XQuery에 사용되는 외부 입력데이터에 대하여 특수문자 및 쿼리 예약어를 필터링하고, XQuery를 사용한 쿼리문은 문자열을 연결하는 형태로 구성하지 않고 파라미터(Parameter)화된 쿼리문을 사용한다.

다. 코드 예제

JAVA
더보기

다음의 예제에서는 executeQuery를 통해 생성하는 쿼리의 파라미터의 일부로 외부 입력값 (name)을 사용하고 있다. 만일 something' or '1'='1 을 name의 값으로 전달하면 다음과 같은 쿼리문을 수행할 수 있으며, 이를 통해 파일 내의 모든 값을 출력할 수 있게 된다.

doc('users.xml')/userlist/user[uname='something' or '1‘='1’]

다음의 예제에서는 외부 입력값을 받고 해당 값 기반의 XQuery상의 쿼리 구조를 변경시키지 않는 bindString 함수를 이용함으로써 외부 입력값을 통해 쿼리 구조가 변경될 수 없도록 한다.

 

C#
더보기

다음의 C# 코드도 외부 입력 값을 이용하여 XQuery 문을 만들고 있다.

문자열 필터링을 통해 쿼리 문 조작을 막을 수 있다.


참고자료

반응형

댓글