J'ai exécuté mon Java contre sonarqube et j'ai obtenu "Désactiver le traitement des entités externes XML (XXE)" comme vulnérabilité. Je passe du temps sur Google pour résoudre le problème. J'ai essayé beaucoup d'approche mais rien ne marche pour moi. Je ne sais pas ce qui me manque
Mon code:
final DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
docFactory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true);
docFactory.setFeature(XMLInputFactory.IS_SUPPORTING_EXTERNAL_ENTITIES, false);
docFactory.setFeature(XMLInputFactory.SUPPORT_DTD, false);
docFactory.setFeature("http://Apache.org/xml/features/disallow-doctype-decl", true);
docFactory.setFeature("http://xml.org/sax/features/external-general-entities", false);
docFactory.setFeature("http://xml.org/sax/features/external-parameter-entities", false);
docFactory.setFeature("http://Apache.org/xml/features/nonvalidating/load-external-dtd", false);
final DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
final Document doc = docBuilder.parse(filepath);
J'utilise Java 1.8, toute aide est appréciée. Merci
Pour moi, changer DocumentBuilderFactory.newInstance()
en DocumentBuilderFactory.newDefaultInstance()
était suffisant pour éliminer cet avertissement.
Il devrait suffire de simplement définir ces deux propriétés:
factory.setFeature("http://Apache.org/xml/features/disallow-doctype-decl", true);
factory.setFeature("http://xml.org/sax/features/external-general-entities", false);