WebLogic XML外部实体解析:除了使用XML注册表之外还有其他方法吗?
-
06-07-2019 - |
题
我们有一个使用SiteMesh的应用程序,当WebLogic尝试解析TLD文件时,它会在“ http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd "。
服务器无法启动到Internet的出站连接,因此无法检索DTD,导致应用程序的部署失败。
我知道可以通过在WebLogic控制台中设置XML注册表并指定在尝试解析时返回的本地文件来解决此问题,例如“ http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd "。
有没有其他方法可以阻止服务器转出'net来解析外部实体引用?通过将DTD与应用程序打包并以某种方式通知服务器在那里查找DTD而不是“在那里”?
解决方案
出于安全考虑,您是否正在尝试这样做?喜欢防止任何类型的XXE攻击?
如果是这样,您可以实现自己的EntityResolver并处理解析器如何执行本地或远程查找。
示例可在此处找到 https://www.securecoding .cert.org /合流/页/ viewpage.action?PAGEID = 61702260
否则,您需要设置XMLInputFactory的配置属性以获取所需的行为。特别是javax.xml.stream.isSupportingExternalEntities和javax.xml.stream.isValidating只取决于您是否认为需要验证。
http://docs.oracle.com/的JavaEE / 5 / API /的javax / XML /流/ XMLInputFactory.html
如果它对您的使用有意义,请查看StaX解析器。