Resolución de entidad externa XML de WebLogic: ¿Hay otra forma además de usar el Registro XML?

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

Pregunta

Tenemos una aplicación que usa SiteMesh, y cuando WebLogic intenta analizar los archivos TLD, ve la especificación DOCTYPE, que contiene la referencia al TLD DTD, en " http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd " ;.

El servidor no puede iniciar conexiones salientes a Internet y, por lo tanto, no puede recuperar la DTD, lo que hace que falle la implementación de la aplicación.

Entiendo que este problema se puede resolver configurando un Registro XML en la consola de WebLogic y especificando un archivo local para devolver al intentar resolver, por ejemplo " http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd " ;.

¿Hay alguna otra forma de evitar que el servidor salga a la red para resolver la referencia de entidad externa? Al empaquetar el DTD con la aplicación e informar de alguna manera al servidor para que busque ese DTD allí en lugar de "afuera" " ;?

¿Fue útil?

Solución

Pregunta rápida ¿Estás tratando de hacer esto por razones de seguridad? desea evitar cualquier tipo de ataque XXE?

Si es así, podría implementar su propio EntityResolver y manejar cómo el analizador realiza cualquier búsqueda local o remota.

Puede encontrar ejemplos aquí https: //www.securecoding .cert.org / confluence / pages / viewpage.action? pageId = 61702260

de lo contrario, debe establecer las propiedades de configuración de XMLInputFactory para obtener el comportamiento que desea. particularmente javax.xml.stream.isSupportingExternalEntities y javax.xml.stream.is La validación solo depende si cree que necesita validación.

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

También busque en el analizador StaX si tiene sentido para su uso.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top