Ich implementiere XML-Validierung, die XXE (externe XML-Entity) -Injektion verhindert. Ich habe etwas Code von OWASP XXE Prevention Cheat Sheet geborgt . Mein Code sieht so aus -
%Vor%Der Code läuft korrekt auf meinem lokalen Windows-Rechner (JDK 1.8.0_92, Wildfly 8.2). Aber auf einem QA Red Hat-Rechner mit ähnlicher Konfiguration (JDK - 1.8.0_101, Wildfly 8.2) gibt es eine Ausnahme mit der Nachricht -
%Vor% Nach einigem Lesen ist mein Verdacht, dass während der Laufzeit eine falsche Klassendefinition für die Klasse validator
gelesen wird. Wie behebe ich das?
Aktualisieren
Stellt sich heraus, dass Jboss mit einer eigenen Implementierung von JAXP
ausgeliefert wird und mein Code die JAXP-Implementierung von JDK und nicht von JBoss auswählen muss. Ich kann dies einfach tun, indem ich das -jaxpmodule
Argument in standalone.sh
übergebe (mit diesem Code wählte mein Code auch die korrekte JAXP-Implementierung aus) -
Aber ich möchte das mit jboss-deployment-structure.xml machen und einen solchen Ausschluss hinzufügen -
%Vor%Aber das funktioniert nicht, wie kann ich das beheben?
Anstatt zu versuchen, JARs aus der Runtime des Servers zu entfernen. Es ist immer ratsam, diese JARs zur Laufzeit aus Ihrem Projekt auszuschließen.E. Wenn Sie Maven für die Abhängigkeitsverwaltung verwenden, können Sie für diese bestimmte JAR in Ihrer pom.xml einfach einen Bereich für diese JAR als "bereitgestellt" angeben. Der angegebene Bereich gibt an, dass diese JAR für die Kompilierungszeit verwendet wird und zur Laufzeit von der Laufzeit selbst bereitgestellt werden.