GirlsBoy
回首向来萧瑟处,归去,也无风雨也无晴。
posts - 36,comments - 1,views - 12万

引子

  ObjectMessage引入的生产者和消费者之间的类路径耦合,ActiveMQ支持他们作为JMS规范的一部分。 ObjectMessage对象依赖marshal/unmarshal进行java序列化,这个过程是不安全的,因为会被恶意利用。从5.12.2和5.13.0开始,ActiveMQ强制用户将ObjectMessages交换的包列入白名单。如果不根据规范进行相应的设置,则会抛出异常This class is not trusted to be serialized as ObjectMessage payload

 

 解决方案

  如果需要交换对象消息,则需要添加应用程序正在使用的包。可通过使用org.apache.activemq.SERIALIZABLE_PACKAGES由代理和activemq系统属性来做到这一点。将设置添加到脚本文件中的ACTIVEMQ_OPTS变量,${ACTIVEMQ_HOME}/bin/env

例如

1
-Dorg.apache.activemq.SERIALIZABLE_PACKAGES=java.lang,javax.security,java.util,org.apache.activemq,org.fusesource.hawtbuf,com.thoughtworks.xstream.mapper,com.mycompany.myapp

  将com.mycompany.myapp包添加到受信任的包列表中。请注意,此处列出的其他软件包默认启用,因为它们是常规代理工作所必需的。如果您想简化此机制,您可以使用*通配符允许所有包被信任,例如

1
-Dorg.apache.activemq.SERIALIZABLE_PACKAGES=*

  在客户端,也需要相同的配置,恶意代码ObjectMessage.getObject()调用时反序列化,从而损害应用程序环境。可在代理上使用相同的配置机制,并使用系统属性配置受信任的类。但是,这在客户端应用程序中不方便,在5.12.2和5.13.1中,引入额外配置,使用ActiveMQConnectionFactory,通过设置信任包和信任类添加设置。

使用setTrustedPackages()设置反序列化受信任的包列表

1
2
ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory("tcp://localhost:61616");
factory.setTrustedPackages(new ArrayList(Arrays.asList("org.apache.activemq.test,org.apache.camel.test".split(","))));

使用setTrustAllPackages()设置关闭安全检查并信任所有类

1
2
ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory("tcp://localhost:61616");
factory.setTrustAllPackages(true);

或者通过设置prop完成

1
ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory("tcp://localhost:61616");<br>Properties props = new Properties();<br><em>props.setProperty("trustAllPackages","true");<br>factory.</em>setProperties(props);

  

更为详细的配置见官方文档:https://activemq.apache.org/objectmessage.html

posted on   GirlsBoy  阅读(156)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

java\web应用开发&研究

梦想程序改变生活

成为一个了不起的人

点击右上角即可分享
微信分享提示