Résolution d'entité XML WebLogic externe: existe-t-il un autre moyen que d'utiliser le registre XML?

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

Question

Nous avons une application qui utilise SiteMesh et lorsque WebLogic tente d'analyser les fichiers TLD, il voit la spécification DOCTYPE, contenant la référence à la DTD TLD, à l'emplacement suivant: " http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd ".

Le serveur ne peut pas établir de connexions sortantes vers Internet et ne peut donc pas récupérer la DTD, ce qui entraîne l'échec du déploiement de l'application.

Je comprends que ce problème peut être résolu en configurant un registre XML dans la console WebLogic et en spécifiant un fichier local à renvoyer lors de la tentative de résolution, par exemple & a; http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd ".

Existe-t-il un autre moyen d'empêcher le serveur de se rendre sur le réseau pour résoudre la référence à une entité externe? En empaquetant la DTD avec l’application et en informant le serveur de rechercher cette DTD plutôt que "dehors"?

Était-ce utile?

La solution

Question rapide essayez-vous de le faire pour des raisons de sécurité? voulez-vous empêcher toute sorte d'attaque XXE?

Si tel est le cas, vous pouvez implémenter votre propre EntityResolver et gérer la manière dont l'analyseur effectue une recherche locale ou distante.

Des exemples sont disponibles ici https: //www.securecoding .cert.org / confluence / pages / viewpage.action? pageId = 61702260

sinon, vous devez définir les propriétés de configuration de XMLInputFactory pour obtenir le comportement souhaité. En particulier, javax.xml.stream.isSupportingExternalEntities et javax.xml.stream.isValidating dépendent simplement du fait que vous pensez avoir besoin de validation.

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

Recherchez également l'analyseur StaX si cela vous semble judicieux.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top