Skip to content

Commit

Permalink
[#702] Disable access to external entities in XML parsing
Browse files Browse the repository at this point in the history
  • Loading branch information
opatrascoiu committed Sep 9, 2024
1 parent 9261b20 commit 007272b
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import org.w3c.dom.Element;
import org.xml.sax.InputSource;

import javax.xml.XMLConstants;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import java.io.IOException;
Expand Down Expand Up @@ -37,6 +38,8 @@ public NSElement deserialize(JsonParser parser, DeserializationContext ctxt) thr
private static Element toElement(String text) {
try {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setAttribute(XMLConstants.ACCESS_EXTERNAL_DTD, "");
factory.setAttribute(XMLConstants.ACCESS_EXTERNAL_SCHEMA, "");
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse(new InputSource(new StringReader(text)));
return doc.getDocumentElement();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import com.gs.dmn.serialization.xstream.dom.NSElement;
import org.w3c.dom.Element;

import javax.xml.XMLConstants;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
Expand All @@ -26,12 +27,13 @@ public void serialize(NSElement element, JsonGenerator gen, SerializerProvider s

private static String toXml(Element element) {
try {
Transformer transformer = TransformerFactory.newInstance().newTransformer();
TransformerFactory factory = TransformerFactory.newInstance();
factory.setAttribute(XMLConstants.ACCESS_EXTERNAL_DTD, "");
factory.setAttribute(XMLConstants.ACCESS_EXTERNAL_SCHEMA, "");
StringWriter writer = new StringWriter();
Transformer transformer = factory.newTransformer();
transformer.transform(new DOMSource(element), new StreamResult(writer));
String xmlString = writer.toString();
return xmlString;
// gen.writeString(xmlString);
return writer.toString();
} catch (TransformerException e) {
throw new RuntimeException("Error serializing DOM Element", e);
}
Expand Down

0 comments on commit 007272b

Please sign in to comment.