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?
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 :-)
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.
Vous pouvez aussi essayer:
TransformerFactoryImpl transformerFactoryImpl = new TransformerFactoryImpl();
Transformer transformer = transformerFactoryImpl.newTransformer();
transformer.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true);
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();