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

时间:2009-07-30 22:24:41

标签: xml java-ee weblogic dtd resolution

我们有一个使用SiteMesh的应用程序,当WebLogic尝试解析TLD文件时,它会在“http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd”处看到DOCTYPE规范,其中包含对TLD DTD的引用。

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

我知道可以通过在WebLogic控制台中设置XML注册表并指定尝试解析时要返回的本地文件来解决此问题,例如“http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd”。

有没有其他方法可以阻止服务器转出'net来解析外部实体引用?通过将DTD与应用程序打包在一起并以某种方式通知服务器在那里寻找DTD而不是“在那里”?

1 个答案:

答案 0 :(得分:2)

出于安全考虑,您是否正在尝试这样做?喜欢防止任何类型的XXE攻击?

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

可在此处找到示例https://www.securecoding.cert.org/confluence/pages/viewpage.action?pageId=61702260

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

http://docs.oracle.com/javaee/5/api/javax/xml/stream/XMLInputFactory.html

如果它对您的使用有意义,请查看StaX解析器。