Hallo liebe Leute,
ich habe momentan folgendes Problem: ich lasse den Fortifyscan über mein Code laufen und kriege den oben genannten Error. Ich habe alles mögliche mittlerweile schon versucht, habe versucht Lösungen aus diesen beiden Seiten zu implementieren:
http://appvigil.co/documentation/doku.php?id=xml_parsing_vulnerable_to_xxe_document_builder
bzw. diese Seite:https://www.owasp.org/index.php/XML_External_Entity_(XXE)_Prevention_Cheat_Sheet
aber wirklich garnichts hilft, selbst auf Stackoverflow antwortet keiner auf diese Frage wie ich dieses Problem behoben bekomme:
http://stackoverflow.com/questions/43470515/xml-injection-on-parser
evtl. wäre ja einer so lieb kurz die zwei Links die ich mitgeschickt habe anzuschauen und dann meine Lösung was mache ich denn falsch?
ich habe momentan folgendes Problem: ich lasse den Fortifyscan über mein Code laufen und kriege den oben genannten Error. Ich habe alles mögliche mittlerweile schon versucht, habe versucht Lösungen aus diesen beiden Seiten zu implementieren:
http://appvigil.co/documentation/doku.php?id=xml_parsing_vulnerable_to_xxe_document_builder
bzw. diese Seite:https://www.owasp.org/index.php/XML_External_Entity_(XXE)_Prevention_Cheat_Sheet
aber wirklich garnichts hilft, selbst auf Stackoverflow antwortet keiner auf diese Frage wie ich dieses Problem behoben bekomme:
http://stackoverflow.com/questions/43470515/xml-injection-on-parser
evtl. wäre ja einer so lieb kurz die zwei Links die ich mitgeschickt habe anzuschauen und dann meine Lösung was mache ich denn falsch?
Java:
private String conf(String xml) {
try {
DocumentBuilderFactory documentBuilder = DocumentBuilderFactory.newInstance();
// This part should prevent XML entity attacks
documentBuilder.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true);
documentBuilder.setFeature("http://xml.org/sax/features/external-general-entities", false);
documentBuilder.setFeature("http://xml.org/sax/features/external-parameter-entities", false);
documentBuilder.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);
documentBuilder.setXIncludeAware(false);
documentBuilder.setExpandEntityReferences(false);
Document document = documentBuilder.newDocumentBuilder().parse(new ByteArrayInputStream(xml.getBytes("UTF-8")));
document.setXmlStandalone(true);
StringWriter stringWriter = new StringWriter();
TransformerFactoryImpl transformerFactoryImpl = new TransformerFactoryImpl();
transformerFactoryImpl.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true);
Transformer transformer = transformerFactoryImpl.newTransformer();
transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
transformer.setOutputProperty(OutputKeys.METHOD, "xml");
transformer.setOutputProperty(OutputKeys.INDENT, "no");
transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
transformer.transform(new DOMSource(document), new StreamResult(stringWriter));
String xml_without_version = stringWriter.toString().replaceAll("\n|\r", "");
String xml_with_version = "<?xml version=\"1.0\"?>" + xml_without_version;
return xml_with_version;
} catch (Exception e) {
throw new RuntimeException("Error converting to String", e);
}
}