我的问题:
Fortify 4.2.1将以下代码标记为容易受到XML外部实体攻击。
TransformerFactory factory = TransformerFactory.newInstance();
StreamSource xslStream = new StreamSource(inputXSL);
Transformer transformer = factory.newTransformer(xslStream);
我尝试过的解决方案:
XMLConstants.FEATURE_SECURE_PROCESSING
的TransformerFactory功能设置为true。 XMLConstants.FEATURE_SECURE_PROCESSING
之外的任何其他内容。 Impl Code 请向我指出您认为我可能没有使用过的任何资源,或者该问题的可能解决方案。
最佳答案
TransformerFactory trfactory = TransformerFactory.newInstance();
trfactory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true);
trfactory.setAttribute(XMLConstants.ACCESS_EXTERNAL_DTD, "");
trfactory.setAttribute(XMLConstants.ACCESS_EXTERNAL_STYLESHEET, "");
我认为这样就足够了。
Fortify会建议以下功能,但不适用于TransformerFactory
factory.setFeature("http://xml.org/sax/features/external-general-entities", false);
factory.setFeature("http://xml.org/sax/features/external-parameter-entities", false);
我们可能需要更改为其他解析器才能使用它们。