我们有一个使用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解析器。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top