-
부적절한 XML 외부 개체 참조 - 시큐어코딩 가이드Web Programming 2023. 5. 16. 23:08728x90반응형
XXE 개념
XXE (XML External Entity)는 XML 파싱 과정에서 발생하는 보안 취약점으로, 외부 엔티티를 사용하여 악의적인 행위를 수행할 수 있는 공격입니다. 주로 악의적인 XML 문서를 통해 서버의 파일 시스템 액세스, 원격 코드 실행, 서비스 거부 등의 공격이 이루어질 수 있습니다.
- DTD를 완전하게 비활성화 화거나 비활성화를 할 수 없는 경우에는 외부 엔티티 및 외부 문서 유형 선언을 각 파서에 맞는 고유한 방식으로 비활성화 해야함
해결방안
- DocumentBuilderFactory 사용시 .setAttribute(XMLConstants.ACCESS_EXTERNAL_DTD,"");
.setAttribute(XMLConstants.ACCESS_EXTERNAL_SCHEMA, ""); 같이 제한 설정을 추가 해야함.
- SAXParser 사용시 .setProperty(XMLConstants.ACCESS_EXTERNAL_DTD,"");
.setProperty(XMLConstants.ACCESS_EXTERNAL_SCHEMA, ""); 같이 제한 설정을 추가 해야함.
- SAXParserFactory 사용시 .setFeature("http://....", true); 와 같이 DTD를 비활성화 해야함.
- TransformerFactory 사용시 .setAttribute(XMLConstants.ACCESS_EXTERNAL_DTD, "");
.setAttribute(XMLConstants.ACCESS_EXTERNAL_STYLESHEET, ""); 같이 제한 설정을 추가 해야함.현재 쓰는 자바 버전이 1.7 버전이라서 아래와 같이 적용하여 방지함.
자바 버전따라 다르고 어떤 소스인지 따라 다름.
//XML파싱 준비 DocumentBuilderFactory doc = null; DocumentBuilder docbU = null; //위에서 구성한 URL을 통해 XMl 파싱 시작 Document docU = null; //XML파싱 준비 doc = DocumentBuilderFactory.newInstance(); // XXE 방지 추가 doc.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true); doc.setFeature("http://xml.org/sax/features/external-general-entities", false); doc.setFeature("http://xml.org/sax/features/external-parameter-entities", false); docbU = doc.newDocumentBuilder(); //위에서 구성한 URL을 통해 XMl 파싱 시작 docU = bU.parse(xmlUrl);
ChatGTP 결과
728x90반응형'Web Programming' 카테고리의 다른 글
JAVA 자바 버전 확인 (0) 2023.05.21 JSTL textarea 개행 나타내기 (0) 2023.05.19 경로 조작 및 자원 삽입 - 소프트웨어 보안 가이드 (0) 2023.05.16 자바스크립트 스크롤 에러 먹히지 않을때 (1) 2023.05.14 SQL 오라클 CLOB 타입 GROUP BY (0) 2023.05.14