XML xsd 上传中的外部实体注入
XML External Entity injection in xsd upload
我正在我的基于 j2ee 的 Web 应用程序中上传一个 xsd,它正在生成 java 类,稍后用于处理。上传 xsd 已被识别为可用于 XML 外部实体注入。我搜索了很多地方并了解如何修复 xml 。但是 XSD 还不清楚
如果有人对此有任何想法,请告诉我。
提前致谢
这里 XSD 没有什么特别之处。就此攻击向量而言,XSD 文档与任何其他 XML 文档一样。
SchemaCompiler schemaCompiler = XJC.createSchemaCompiler();
schemaCompiler.setDefaultPackageName(packageName);
XMLInputFactory xmlInputFactory = XMLInputFactory.newInstance();
xmlInputFactory.setProperty(XMLInputFactory.SUPPORT_DTD, false);
xmlInputFactory.setProperty("javax.xml.stream.isSupportingExternalEntities", false);
XMLStreamReader xmlStreamReader = xmlInputFactory.createXMLStreamReader(new FileInputStream(xsdFile));
try {
schemaCompiler.parseSchema(xsdFile.toURI().toString(),xmlStreamReader);
} catch (XMLStreamException e) {
// handle exception
}
我正在我的基于 j2ee 的 Web 应用程序中上传一个 xsd,它正在生成 java 类,稍后用于处理。上传 xsd 已被识别为可用于 XML 外部实体注入。我搜索了很多地方并了解如何修复 xml 。但是 XSD 还不清楚 如果有人对此有任何想法,请告诉我。
提前致谢
这里 XSD 没有什么特别之处。就此攻击向量而言,XSD 文档与任何其他 XML 文档一样。
SchemaCompiler schemaCompiler = XJC.createSchemaCompiler();
schemaCompiler.setDefaultPackageName(packageName);
XMLInputFactory xmlInputFactory = XMLInputFactory.newInstance();
xmlInputFactory.setProperty(XMLInputFactory.SUPPORT_DTD, false);
xmlInputFactory.setProperty("javax.xml.stream.isSupportingExternalEntities", false);
XMLStreamReader xmlStreamReader = xmlInputFactory.createXMLStreamReader(new FileInputStream(xsdFile));
try {
schemaCompiler.parseSchema(xsdFile.toURI().toString(),xmlStreamReader);
} catch (XMLStreamException e) {
// handle exception
}