RMI注册表筛选器拒绝java 8更新121中的RMI配置类
Java 8 update 121添加了用于反序列化的部分过滤器、RMI注册表串行过滤器和RMI DGC Serail过滤器,请参阅 目前,我正在尝试解组一个用于Rmi配置的类,我们已经完成了这个配置。如果没有任何系统属性,筛选器将不允许它,并且使用系统属性RMI注册表筛选器拒绝java 8更新121中的RMI配置类,java,security,rmi,Java,Security,Rmi,Java 8 update 121添加了用于反序列化的部分过滤器、RMI注册表串行过滤器和RMI DGC Serail过滤器,请参阅 目前,我正在尝试解组一个用于Rmi配置的类,我们已经完成了这个配置。如果没有任何系统属性,筛选器将不允许它,并且使用系统属性-Dsun.rmi.registry.registryFilter=.*它仍然拒绝该类。日志消息为: INFO: ObjectInputFilter REJECTED: class <package_name and class nam
-Dsun.rmi.registry.registryFilter=.*
它仍然拒绝该类。日志消息为:
INFO: ObjectInputFilter REJECTED: class <package_name and class name>, arraylength: -1, nRefs: 11, depth: 4, bytes: 837, ex: n/a
是否有其他方法可以正确应用此白名单?我们也在运行RMI服务器。 我用代码而不是命令行解决了这个问题,但这两种方法都应该有效,我猜shell globbing会妨碍你
java.lang.System.setProperty("sun.rmi.registry.registryFilter", "java.**;<our package base>.**")
java.lang.System.setProperty(“sun.rmi.registry.registryFilter”,“java.*.*;*”)
默认值(如果未指定筛选器属性)位于RMIRisteryImpl的源中:
这只允许在RMI中注册9个基本Java类+原语的子类。但是注册对象后面的整个可序列化对象图将使用此过滤器进行检查。数组限制为10000,最大树深度为5
如果尝试注册筛选器而不命名类白名单(如“maxdepth=10000000”),则仍将应用默认的类白名单。为避免此错误,请在setDomainEnv.sh中添加以下参数
-Dweblogic.oif.serialFilterMode=combine
-Dweblogic.oif.serialFilterScope=weblogic
-Dweblogic.oif.serialFilter=maxDepth=10000
这将覆盖weblogic.oif.code中默认定义为100的maxdepth,我想您可能是shell通配符全球化的受害者。您是否尝试过
-Dsun.rmi.registry.registryFilter=“.*”
?还没有。我会试试的,运气不好。还是一样的错误。
-Dweblogic.oif.serialFilterMode=combine
-Dweblogic.oif.serialFilterScope=weblogic
-Dweblogic.oif.serialFilter=maxDepth=10000