web-dev-qa-db-fra.com

Fortify fix pour l'injection d'entité externe XML

Lorsque je numérise à l’aide de l’outil fortify, certains problèmes apparaissent sous "Injection d’entité externe XML".

TransformerFactory trfactory = TransformerFactory.newInstance(); 

C'est l'endroit où il montre une erreur. J'ai donné le correctif ci-dessous suggéré par fortify

trfactory.setFeature("http://xml.org/sax/features/external-general-entities", false); 
trfactory.setFeature("http://xml.org/sax/features/external-parameter-entities", false); 

mais les problèmes ne sont toujours pas résolus. Comment résoudre ce problème?

6
veera

Parfois, cela ne fonctionnera pas si la version de Java n'est pas compatible.

if (javaVersion > 1.6) {
        dbf.setFeature("http://xml.org/sax/features/external-general-entities", false);
        dbf.setFeature("http://xml.org/sax/features/external-parameter-entities", false);
      }
else {
        if (javaVersion > 1.5) {
          dbf.setFeature("http://xerces.Apache.org/xerces2-j/features.html#external-general-entities", false);
          dbf.setFeature("http://xerces.Apache.org/xerces2-j/features.html#external-parameter-entities", false);
        }
else {
          dbf.setFeature("http://xerces.Apache.org/xerces-j/features.html#external-general-entities", false);
          dbf.setFeature("http://xerces.Apache.org/xerces-j/features.html#external-parameter-entities", false);
        }
 }

Cela a fonctionné pour moi :-)

1
prathamesh
TransformerFactory trfactory = TransformerFactory.newInstance();
trfactory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true);
trfactory.setAttribute(XMLConstants.ACCESS_EXTERNAL_DTD, "");
trfactory.setAttribute(XMLConstants.ACCESS_EXTERNAL_STYLESHEET, "");

Cela serait suffisant.

1
Kondal Kolipaka

Vous pouvez aussi essayer:

    TransformerFactoryImpl transformerFactoryImpl = new TransformerFactoryImpl();
    Transformer transformer = transformerFactoryImpl.newTransformer();
    transformer.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true);
0
Ben Wong

J'ai essayé avec la classe d'implémentation "Xalan" au lieu de TransformerFactory.newInstance (). Cela a fonctionné pour moi et le problème de fortification a été corrigé.

        TransformerFactoryImpl transformerFactoryImpl = new TransformerFactoryImpl();
        Transformer transformer = transformerFactoryImpl.newTransformer();
0
veera