Java 防止Xerces 2注入XXE(外部XML实体)

Java 防止Xerces 2注入XXE(外部XML实体),java,xml,xerces2-j,Java,Xml,Xerces2 J,我正在尝试实现一个XML验证,它将阻止XXE注入。上显示的代码与本机JDK8完美配合 SchemaFactory schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI); Schema schema = schemaFactory.newSchema(fSchema); Validator validator = schema.newValidator(); va

我正在尝试实现一个XML验证,它将阻止XXE注入。上显示的代码与本机JDK8完美配合

    SchemaFactory schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
    Schema schema = schemaFactory.newSchema(fSchema);
    Validator validator = schema.newValidator();

    validator.setProperty(XMLConstants.ACCESS_EXTERNAL_DTD, "");
    validator.setProperty(XMLConstants.ACCESS_EXTERNAL_SCHEMA, "");

    validator.validate(new StreamSource(fXml));
问题是我在Wildfly10上使用了这段代码,其中Xerces2在内部使用(xercesImpl-2.11.0.SP4),并且所需的XMLConstants无法识别

Exception in thread "main" org.xml.sax.SAXNotRecognizedException: Property 'http://javax.xml.XMLConstants/property/accessExternalDTD' is not recognized.
该问题在具有给定Maven依赖性的单元测试中是简单可重复的

<!-- https://mvnrepository.com/artifact/xerces/xercesImpl -->
<dependency>
    <groupId>xerces</groupId>
    <artifactId>xercesImpl</artifactId>
    <version>2.11.0.SP4</version>
</dependency>

薛西斯
干细胞移植
2.11.0.SP4
尽管可以使用参数停用Wildfly10上的Xerces2

-jaxpmodule“javax.xml.jaxp提供程序”

这不是我想做的

是否有人知道如何正确配置Xerxces2以防止XXE注入…

以避免fortify中的XXE(外部XML实体)注入:

在逻辑部分的代码行下方设置,以避免XXE注入

factory.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true); 
factory.setFeature("http://xml.org/sax/features/external-general-entities", false);
factory.setFeature("http://xml.org/sax/features/external-parameter-entities", false);