Skip to content

Commit bcad78b

Browse files
pjfanningcowtowncoder
authored andcommitted
set transformer factory attributes to improve protection against XXE (#3837)
1 parent 7dffbde commit bcad78b

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
}
@@ -61,4 +63,13 @@ public JsonNode getSchema(SerializerProvider provider, java.lang.reflect.Type ty
6163
public void acceptJsonFormatVisitor(JsonFormatVisitorWrapper visitor, JavaType typeHint) throws JsonMappingException {
6264
if (visitor != null) visitor.expectAnyFormat(typeHint);
6365
}
66+
67+
private static void setTransformerFactoryAttribute(final TransformerFactory transformerFactory,
68+
final String name, final Object value) {
69+
try {
70+
transformerFactory.setAttribute(name, value);
71+
} catch (Exception e) {
72+
System.err.println("[DOMSerializer] Failed to set TransformerFactory attribute: " + name);
73+
}
74+
}
6475
}

0 commit comments

Comments
 (0)