WebLogicXML外部实体解析:除了使用XML注册表,还有其他方法吗?

WebLogicXML外部实体解析:除了使用XML注册表,还有其他方法吗?,xml,jakarta-ee,weblogic,dtd,resolution,Xml,Jakarta Ee,Weblogic,Dtd,Resolution,我们有一个使用SiteMesh的应用程序,当WebLogic尝试解析TLD文件时,它会在“”处看到DOCTYPE规范,其中包含对TLD DTD的引用 服务器无法启动到Internet的出站连接,因此无法检索DTD,从而导致应用程序部署失败 我知道这个问题可以通过在WebLogic控制台中设置一个XML注册表来解决,并在尝试解析时指定一个要返回的本地文件,例如“” 有没有其他方法可以防止服务器通过“网络”解析外部实体引用?通过将DTD与应用程序打包,并以某种方式通知服务器在其中查找该DTD,而不是

我们有一个使用SiteMesh的应用程序,当WebLogic尝试解析TLD文件时,它会在“”处看到DOCTYPE规范,其中包含对TLD DTD的引用

服务器无法启动到Internet的出站连接,因此无法检索DTD,从而导致应用程序部署失败

我知道这个问题可以通过在WebLogic控制台中设置一个XML注册表来解决,并在尝试解析时指定一个要返回的本地文件,例如“”


有没有其他方法可以防止服务器通过“网络”解析外部实体引用?通过将DTD与应用程序打包,并以某种方式通知服务器在其中查找该DTD,而不是“在那里”?

快速问题,您是否出于安全原因而尝试这样做?想要防止任何类型的XXE攻击吗

如果是这样,您可以实现自己的EntityResolver,并处理解析器如何进行本地或远程查找

这里可以找到一些例子

否则,需要设置XMLInputFactory的配置属性以获得所需的行为。特别是javax.xml.stream.isSupportingExternalEntities和javax.xml.stream.isValidating只取决于您是否认为需要验证


如果对您的使用有意义,还可以查看StaX解析器。

我很感谢您的回复。问题的核心是,负责WebLogic服务器配置的人员拒绝因出站访问限制而进行必要的XML注册表更改。他们希望我们修改第三方JAR以从所有DTD中删除系统标识符。