Risoluzione entità esterna XML WebLogic: esiste un altro modo oltre all'utilizzo del registro XML?

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

Domanda

Abbiamo un'applicazione che utilizza SiteMesh e quando WebLogic tenta di analizzare i file TLD, vede la specifica DOCTYPE, contenente il riferimento al DTD TLD, in " http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd " ;.

Il server non può avviare connessioni in uscita a Internet, quindi non può recuperare il DTD, il che provoca il fallimento della distribuzione dell'applicazione.

Comprendo che questo problema può essere risolto impostando un registro XML nella console di WebLogic e specificando un file locale da restituire quando si tenta di risolvere, ad esempio " http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd " ;.

Esiste un altro modo per impedire al server di uscire in rete per risolvere il riferimento di entità esterna? Impacchettando il DTD con l'applicazione e in qualche modo informando il server di cercare quel DTD lì dentro piuttosto che "quotato là fuori"?

È stato utile?

Soluzione

Domanda rapida, stai cercando di farlo per motivi di sicurezza? vuoi prevenire qualsiasi tipo di attacco XXE?

In tal caso è possibile implementare il proprio EntityResolver e gestire il modo in cui il parser esegue qualsiasi ricerca locale o remota.

Esempi sono disponibili qui https: //www.securecoding .cert.org / confluenza / pagine / viewpage.action? pageId = 61702260

altrimenti è necessario impostare le proprietà di configurazione di XMLInputFactory per ottenere il comportamento desiderato. in particolare javax.xml.stream.isSupportingExternalEntities e javax.xml.stream.isLa convalida dipende solo se pensi di aver bisogno della convalida.

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

Guarda anche nel parser StaX se ha senso per il tuo uso.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top