Skip to content

Commit 2250ae5

Browse files
committed
Fix External Entity Injection
1 parent e4801a2 commit 2250ae5

File tree

4 files changed

+14
-2
lines changed

4 files changed

+14
-2
lines changed

src/main/java/com/ibm/wsdl/xml/WSDLReaderImpl.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import java.io.*;
88
import java.net.*;
99
import java.util.*;
10+
import javax.xml.XMLConstants;
1011
import javax.xml.namespace.*;
1112
import javax.xml.parsers.*;
1213

@@ -2209,7 +2210,8 @@ private static Document getDocument(InputSource inputSource,
22092210
String desc) throws WSDLException
22102211
{
22112212
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
2212-
2213+
factory.setAttribute(XMLConstants.ACCESS_EXTERNAL_DTD, "");
2214+
factory.setAttribute(XMLConstants.ACCESS_EXTERNAL_SCHEMA, "");
22132215
factory.setNamespaceAware(true);
22142216
factory.setValidating(false);
22152217

src/main/java/com/ibm/wsdl/xml/WSDLWriterImpl.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
import java.io.*;
88
import java.util.*;
9+
import javax.xml.XMLConstants;
910
import javax.xml.namespace.*;
1011
import javax.xml.parsers.*;
1112
import org.w3c.dom.*;
@@ -1004,7 +1005,8 @@ private static Document getDocument(InputSource inputSource,
10041005
String desc) throws WSDLException
10051006
{
10061007
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
1007-
1008+
factory.setAttribute(XMLConstants.ACCESS_EXTERNAL_DTD, "");
1009+
factory.setAttribute(XMLConstants.ACCESS_EXTERNAL_SCHEMA, "");
10081010
factory.setNamespaceAware(true);
10091011
factory.setValidating(false);
10101012

src/main/java/org/reficio/ws/common/XmlUtils.java

+5
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import org.xml.sax.InputSource;
2626
import org.xml.sax.SAXException;
2727

28+
import javax.xml.XMLConstants;
2829
import javax.xml.namespace.QName;
2930
import javax.xml.parsers.DocumentBuilder;
3031
import javax.xml.parsers.DocumentBuilderFactory;
@@ -83,6 +84,8 @@ public static Source xmlStringToSource(String xmlString) {
8384
StringReader reader = new StringReader(xmlString);
8485
InputSource src = new InputSource(reader);
8586
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
87+
dbf.setAttribute(XMLConstants.ACCESS_EXTERNAL_DTD, "");
88+
dbf.setAttribute(XMLConstants.ACCESS_EXTERNAL_SCHEMA, "");
8689
try {
8790
DocumentBuilder db = dbf.newDocumentBuilder();
8891
Document dom = db.parse(src);
@@ -138,6 +141,8 @@ public static String serializePretty(Document document) {
138141
public static String normalizeAndRemoveValues(String xmlContent) {
139142
try {
140143
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
144+
dbf.setAttribute(XMLConstants.ACCESS_EXTERNAL_DTD, "");
145+
dbf.setAttribute(XMLConstants.ACCESS_EXTERNAL_SCHEMA, "");
141146
dbf.setNamespaceAware(true);
142147
dbf.setCoalescing(true);
143148
dbf.setIgnoringElementContentWhitespace(true);

src/main/java/org/reficio/ws/legacy/XmlUtils.java

+3
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import org.xml.sax.InputSource;
3030
import org.xml.sax.SAXException;
3131

32+
import javax.xml.XMLConstants;
3233
import javax.xml.namespace.QName;
3334
import javax.xml.parsers.DocumentBuilder;
3435
import javax.xml.parsers.DocumentBuilderFactory;
@@ -276,6 +277,8 @@ private static DocumentBuilder ensureDocumentBuilder() {
276277
if (documentBuilder == null) {
277278
try {
278279
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
280+
dbf.setAttribute(XMLConstants.ACCESS_EXTERNAL_DTD, "");
281+
dbf.setAttribute(XMLConstants.ACCESS_EXTERNAL_SCHEMA, "");
279282
dbf.setNamespaceAware(true);
280283
documentBuilder = dbf.newDocumentBuilder();
281284
} catch (ParserConfigurationException e) {

0 commit comments

Comments
 (0)