2023년 5월 16일 화요일

자바 시큐어코딩 부적절한 XML 외부개체 참조

XML 문서에는 DTD 를 포함할수 있으면 DTD는 XML엔티티를 정의, 부적절한 XML 외부 엔티티를 처리할수 있도록 설정된 경우에 보안약점이 발생됨.

예)
DoculemtBuilderFactory fac = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();

TransformerFactory tfac = javax.xml.transform.TransformerFactory.newInstance();

>>>
DoculemtBuilderFactory fac = DocumentBuilderFactory.newInstan
ce();
// xml파서가  doctype을 정의하지 모하도록 설정
fac.setFeature("http://xml.org/sax/features/external-general-entities", false);
// 외부 엔티티를 포함하지 않도록 설정
fac.setFeautr("http://xml.org/sax/features/external-general-entities", false);
// 외부 파라미터도 포함하지 않도록 설정
fac.setFeature("http://xml.org/sax/features/external-parameter-entities", false);
//외부 dtd 비활성화
fac.setFeature("http:/apache.org/xml/features/nonvalidation/load-external-dtd", false);


TransformerFactory tfac = javax.xml.transform.TransformerFactory.newInstance();
tfac.setFeature("http://javax.xml.XMLConstants/feature/secure-processing", true);

DocumentBuilder builder = factory.newDocumentBuilder();

소프트웨어개발보안 가이드
- 행정안전부, 한국인터넷진흥원 참조

댓글 없음:

댓글 쓰기