TransformerFactory.newInstance(...) 容易受到 XML 和 XSLT 外部实体攻击

问题描述 投票:0回答:1

我正在运行 Java 8,SonarQube 告诉我使用 TransformerFactory.new Instance() 容易受到外部 XML 和 XSLT 攻击。

我正在尝试将 ACCESS_EXTERNAL_DTD 和 ACCESS_EXTERNAL_STYLESHEET 属性插入到我的 TransformerFactory 中以避免 XML 和 XSLT 外部实体攻击。 搜索论坛,我发现解决方案是在 TransformerFactory 中添加以下属性:

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

但这对我不起作用。它告诉我这些属性不存在。 我该如何解决这个问题?

java xml xslt sonarqube
1个回答
0
投票

我终于找到了解决方案,现在它确实检测到了属性:

TransformerFactory transformerFactory = new TransformerFactoryImpl();
transformerFactory.setAttribute(XMLConstants.ACCESS_EXTERNAL_DTD, "");
transformerFactory.setAttribute(XMLConstants.ACCESS_EXTERNAL_STYLESHEET, "");
transformerFactory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true);

我不知道这样做是否正确,但它有效并且可以防止声纳抱怨。

© www.soinside.com 2019 - 2024. All rights reserved.