반응형
https://www.kisa.or.kr/public/laws/laws3.jsp
구현 단계 시큐어코딩 가이드 - 입력 데이터 검증 및 표현 - 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 문을 만들고 있다.
문자열 필터링을 통해 쿼리 문 조작을 막을 수 있다.
참고자료
- CWE-652 XQuery Injection, MITRE,
http://cwe.mitre.org/data/definitions/652.html - Prevent XML Injection, CERT,
http://www.securecoding.cert.org/confluence/display/java/IDS16- J.+Prevent+XML+Injection
반응형
'공부 > KISA' 카테고리의 다른 글
LDAP 삽입 - KISA 소프트웨어 개발 보안 가이드 (0) | 2020.07.20 |
---|---|
XPath 삽입 - KISA 소프트웨어 개발 보안 가이드 (0) | 2020.07.20 |
신뢰되지 않는 URL 주소로 자동접속 연결 - KISA 소프트웨어 개발 보안 가이드 (0) | 2020.07.20 |
위험한 형식 파일 업로드 - KISA 소프트웨어 개발 보안 가이드 (0) | 2020.07.19 |
운영체제 명령어 삽입 - KISA 소프트웨어 개발 보안 가이드 (0) | 2020.07.18 |
댓글