XML 조회 시 질의문(XPath, XQuery 등) 내 입력값과 그 조회결과에 대한 유효성 검증방법(필터링 등) 설계 및 유효하지 않은 값에 대한 처리방법을 설계해야 한다.
(입력데이터 검증 및 표현) XML 삽입
(입력데이터 검증 및 표현) 부적절한 XML 외부개체 참 조
①XML질의문에 사용되는 파라미터는 반드시 XML 질의문을 조작할 수 없도록 필터링해서 사용하거나, 미리 작성된 질의문에 입력 값을 자료형에 따라 바인딩해서 사용
① XML문서를 조회하는 기능을 구현해야 하는 경우 XML질의문에 사용되는 파라미터는 반드시 XML질의문을 조작할 수 없도록 필터링해서 사용하거나, 미리 작성된 질의문에 입력값을 자료형에 따라 바인딩해서 사용해야 한다.
(ㄱ) 공통 검증 컴포넌트를 이용한 입력값 필터링
외부 입력값에서 XML삽입 공격이 가능한 문자열들을 필터링하는 Validator 컴포넌트를 개발하여 XML조회를 수행하는 애플리케이션 작성 시 입력값에 대한 검증 작업이 일괄 적용되도록 설계 한다.
(ㄴ) 필터 컴포넌트를 이용한 입력값 필터링
Filter컴포넌트에서 XML 삽입 공격에 활용될 수 있는 입력값(", [, ], /, =, @)을 필터링하도록 작성하여 전체 요청 또는 XML필터링이 요구되는 요청에 대해 프레임워크에서 일괄 적용하도록 설계한다.
(ㄷ) 개별 코드에서 입력값 필터링하도록 시큐어코딩 규칙 정의
각각의 컴포넌트에서 입력값에 대해 XML삽입을 발생시킬 수 있는 문자열(", [, ], /, =, @ 등)을 제거 또는 안전하게 치환하여 사용할 수 있도록 시큐어코딩 규칙을 정의한다.
(ㄹ) 안전한 API를 사용하도록 시큐어코딩 규칙 정의
XML 조회를 수행하는 질의문 작성 시 외부 입력값이 질의문의 구조를 바꿀 수 없는 API(예.Java API ‐ XQuery)를 사용하도록 시큐어코딩 규칙을 정의한다.