gpt4 book ai didi

java - 在 transformerFactory 中设置 FEATURE_SECURE_PROCESSING 是否也会更新其他安全功能?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:37:24 24 4
gpt4 key购买 nike

在jdk1.6中,我在设置的时候

transformerFactory.setFeature(XMLConstants.ACCESS_EXTERNAL_DTD, false)

我遇到了以下错误:

javax.xml.transform.TransformerConfigurationException: Cannot set the feature 'http://javax.xml.XMLConstants/property/accessExternalDTD' on this TransformerFactory. at org.apache.xalan.processor.TransformerFactoryImpl.setFeature(TransformerFactoryImpl.java:418)

与我在这里找到的一样:How to prevent xalan.jar that has META-INF\services\javax.xml.transform.TransformerFactory from taking over JDK 1.6 built in Xalan implementation?我无法进行此处建议的更改,因为我的管理员已审查过其他 API 冲突。

根据此链接:http://xml.apache.org/xalan-j/features.html#domsource您可以使用 TransformerFactory.setFeature(String, boolean) 方法来设置特征的值。 Xalan-Java 仅支持设置 XMLConstants.FEATURE_SECURE_PROCESSING 功能。对于所有其他功能,TransformerFactory 公开它们的值,但不能更改它们的状态。

因此,如果使用 TransormerFactory 的 xalan 实现,我们似乎只能设置此功能。

transformerFactory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true);

最后是我的问题:如果我们设置功能:

transformerFactory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true);

然后是另一个功能 (XMLConstants.ACCESS_EXTERNAL_DTD) 自动设置为 false。
我从我设置的日志中得到上述功能为“假”。但我想确定 accessExternalDTD 功能是否默认设置为 false,或者安全处理功能是否设置为 true。

最佳答案

在 Java 8 中是的。如果我们设置

TransformerFactory factory = TransformerFactory.newInstance();
factory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true);

然后属性 ACCESS_EXTERNAL_DTDACCESS_EXTERNAL_STYLESHEET 设置为 "",如 owasp guide推荐。

我们可以通过以下方式验证它:

Object hasExternalDtd=factory.getAttribute(XMLConstants.ACCESS_EXTERNAL_DTD);
Object hasExternalStyle=factory.getAttribute(XMLConstants.ACCESS_EXTERNAL_STYLESHEET);

设置FEATURE_SECURE_PROCESSING 功能后。

如果我们不设置它,则两个属性的默认值为 all

关于java - 在 transformerFactory 中设置 FEATURE_SECURE_PROCESSING 是否也会更新其他安全功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29924050/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com