WebLogic XML 외부 엔터티 확인:XML 레지스트리를 사용하는 것 외에 다른 방법이 있습니까?

StackOverflow https://stackoverflow.com/questions/1209743

문제

SiteMesh를 사용하는 애플리케이션이 있는데 WebLogic이 TLD 파일을 구문 분석하려고 하면 "에서 TLD DTD에 대한 참조가 포함된 DOCTYPE 사양을 확인합니다.http://java.sun.com/dtd/web-jsptalibrary_1_2.dtd".

서버는 인터넷에 대한 아웃바운드 연결을 시작할 수 없으므로 DTD를 검색할 수 없으며 이로 인해 애플리케이션 배포가 실패하게 됩니다.

WebLogic 콘솔에서 XML 레지스트리를 설정하고 해결하려고 할 때 반환할 로컬 파일을 지정하면 이 문제가 해결될 수 있다는 것을 이해합니다. 예를 들어 "http://java.sun.com/dtd/web-jsptalibrary_1_2.dtd".

외부 엔터티 참조를 해결하기 위해 서버가 'net'으로 나가는 것을 방지하는 다른 방법이 있습니까?애플리케이션과 함께 DTD를 패키징하고 "외부"가 아닌 내부에서 해당 DTD를 찾도록 서버에 알리는 방법이 있습니까?

도움이 되었습니까?

해결책

빠른 질문입니다. 보안상의 이유로 이 작업을 수행하려고 하시나요?어떤 종류의 XXE 공격도 방지하고 싶나요?

그렇다면 자체 EntityResolver를 구현하고 파서가 로컬 또는 원격 조회를 수행하는 방법을 처리할 수 있습니다.

예는 여기에서 찾을 수 있습니다. https://www.securecoding.cert.org/confluence/pages/viewpage.action?pageId=61702260

그렇지 않으면 원하는 동작을 얻으려면 XMLInputFactory의 구성 속성을 설정해야 합니다.특히 javax.xml.stream.isSupportingExternalEntities 및 javax.xml.stream.isValidating은 유효성 검사가 필요하다고 생각하는지 여부에 따라 다릅니다.

http://docs.oracle.com/javaee/5/api/javax/xml/stream/XMLInputFactory.html

또한 사용하기에 적합하다면 StaX 파서를 살펴보십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top