web-dev-qa-db-fra.com

comment corriger les vulnérabilités «Désactiver le traitement des entités externes XML (XXE)» dans java

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

4
cheetoo

Pour moi, changer DocumentBuilderFactory.newInstance() en DocumentBuilderFactory.newDefaultInstance() était suffisant pour éliminer cet avertissement.

0
Line

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);
0
Michał S