【发布时间】:2015-11-17 15:44:14
【问题描述】:
我的问题:
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。研究了为 TransformerFactory 提供更多此类功能的可能性,就像我们为 DOM 和 SAX 解析器所做的那样。例如不允许 doctype 声明等。但 TransformerFactoryImpl 似乎不接受
XMLConstants.FEATURE_SECURE_PROCESSING的任何其他内容。 Impl Code
请指出您认为我可能没有使用过的任何资源或可能解决此问题的方法。
【问题讨论】:
-
我对 Fortify 不熟悉,但您说对于 SAX 解析器,您知道如何满足 Fortify 的要求,在这种情况下,我想知道是否提供 SAXSource 而不是 StreamSource,您可以在其中设置所有必需的功能SAX 解析器,工作正常。
-
@MartinHonnen 谢谢,让我试试这个,我会回来的。
-
@RaviRanjan 我也有同样的问题。你能解决你的问题吗?
-
@ThusithaThilinaDayaratne 我很难找到一个具体的解决方案,所以我只在 TransformerFactory 类上设置了 XMLConstants.FEATURE_SECURE_PROCESSING。另外,我可以指向 xalan 和 javas 自己的 TrasnformerFactoryImpl 实现类的实现,以针对您的问题的任何解决方案进行更多研究。如果您能够通过,请分享您的发现。
-
我也面临类似的问题如果有任何解决方案正在使用 java 1.6,请告诉我