JEP 185:限制获取外部 XML 资源
概括
增强 JAXP API 以添加限制可用于获取外部资源的网络协议集的功能。
目标
定义标准属性以限制可用于获取外部资源的网络协议集。新属性应与现有安全处理功能以及其他现有功能和属性无缝协作。
非目标
该提案重点关注外部资源的处理。无意修改现有的安全架构,也无意更改实现已支持但 API 中未指定的功能和属性。
动机
JAXP安全处理功能对 XML 处理器设置资源限制,以应对某些类型的拒绝服务攻击。然而,它并不限制获取外部资源的方式,这在尝试安全地处理 XML 文档时也很有用。当前的 JAXP 实现支持可用于强制实施此类限制的特定于实现的属性,但需要一种标准方法来执行此操作。
描述
JAXP 1.5 添加了三个新的 API 级属性,以将外部连接限制为特定的命名协议:
-
javax.xml.XMLConstants.ACCESS_EXTERNAL_DTD
:可以访问外部 DTD 和外部实体引用的协议列表。 -
javax.xml.XMLConstants.ACCESS_EXTERNAL_SCHEMA
:可以解析由和元素schemaLocation
的属性指定的外部模式引用的协议列表。import``include
-
javax.xml.XMLConstants.ACCESS_EXTERNAL_STYLESHEET
:协议列表,通过这些协议可以解析样式表构造中指定的外部引用,例如处理指令、document()
函数、import
元素和元素。include
它还添加了三个相应的系统属性,以便开发人员能够在不更改代码的情况下更改设置:
-
javax.xml.accessExternalDTD
为了ACCESS_EXTERNAL_DTD
-
javax.xml.accessExternalSchema
为了ACCESS_EXTERNAL_SCHEMA
-
javax.xml.accessExternalStylesheet
为了ACCESS_EXTERNAL_STYLESHEET
最后,它允许在现有配置文件中设置上述属性,${java.home}/lib/jaxp.properties
从而定义 JDK 或 JRE 的所有调用的行为。文件中条目的格式为property-name=value