Skip to content

Commit dc717e9

Browse files
authored
set transformer factory attributes to improve protection against XXE (#3837)
1 parent be7c8e1 commit dc717e9

File tree

1 file changed

+11
-0
lines changed

1 file changed

+11
-0
lines changed

src/main/java/com/fasterxml/jackson/databind/ext/DOMSerializer.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@ public DOMSerializer() {
2828
try {
2929
transformerFactory = TransformerFactory.newInstance();
3030
transformerFactory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true);
31+
setTransformerFactoryAttribute(transformerFactory, XMLConstants.ACCESS_EXTERNAL_DTD, "");
32+
setTransformerFactoryAttribute(transformerFactory, XMLConstants.ACCESS_EXTERNAL_STYLESHEET, "");
3133
} catch (Exception e) {
3234
throw new IllegalStateException("Could not instantiate `TransformerFactory`: "+e.getMessage(), e);
3335
}
@@ -65,4 +67,13 @@ public JsonNode getSchema(SerializerProvider provider, java.lang.reflect.Type ty
6567
public void acceptJsonFormatVisitor(JsonFormatVisitorWrapper visitor, JavaType typeHint) throws JsonMappingException {
6668
if (visitor != null) visitor.expectAnyFormat(typeHint);
6769
}
70+
71+
private static void setTransformerFactoryAttribute(final TransformerFactory transformerFactory,
72+
final String name, final Object value) {
73+
try {
74+
transformerFactory.setAttribute(name, value);
75+
} catch (Exception e) {
76+
System.err.println("[DOMSerializer] Failed to set TransformerFactory attribute: " + name);
77+
}
78+
}
6879
}

0 commit comments

Comments
 (0)