賞金將在 7 天后到期。此問題的答案有資格獲得 100聲望賞金。 馬修想提請更多注意這個問題:
這似乎是較新的 java 版本的問題,但解決方案的細節并不多。
在以下方法中,我將 XMLConstant 定義FEATURE_SECURE_PROCESSING為 false 的 DocumentBuilderFactory。
private static DocumentBuilderFactory getDocumentBuilderFactory() throws ParserConfigurationException {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, false);
factory.setAttribute(XMLConstants.ACCESS_EXTERNAL_DTD, ""); // Compliant
factory.setAttribute(XMLConstants.ACCESS_EXTERNAL_SCHEMA, ""); // compliant
return factory;
}
但是,當我測驗此屬性的值時,回傳 DocumentBuilderFactory 后它為“真”。
我閱讀了源檔案,它指出:
{@code TransformerFactory} 有可能公開特征值但無法更改其狀態。
我假設這個屬性是“不可更改的”,只需將其設定為 false。我很好奇,是否可以使用反射來解決這個問題?還有其他更“穩定”的方法可以將此屬性設定為 false 嗎?
uj5u.com熱心網友回復:
FEATURE_SECURE_PROCESSING無法關閉,很遺憾。您可以通過調整與 關聯的限制來有效地覆寫此安全措施FEATURE_SECURE_PROCESSING。
通過系統屬性的示例:
final String MAX_XPATH_GROUP_LIMIT = "jdk.xml.xpathExprGrpLimit";
final String MAX_XPATH_OPERATOR_LIMIT = "jdk.xml.xpathExprOpLimit";
final String MAX_XPATH_TOTAL = "jdk.xml.xpathTotalOpLimit";
System.setProperty(MAX_XPATH_GROUP_LIMIT, "-1");
System.setProperty(MAX_XPATH_OPERATOR_LIMIT, "-1");
System.setProperty(MAX_XPATH_TOTAL, "-1");
值 <= 0 相當于“無限制”。
來源:https ://www.oracle.com/java/technologies/javase/11-0-15-relnotes.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/490157.html
下一篇:SaxParseException元素型別“hr”必須由匹配的結束標記“</hr>”終止。使用jaxb讀取xml時
