首页 > 其他分享 >This class is not trusted to be serialized as ObjectMessage payload.ActiveMQ序列化设置

This class is not trusted to be serialized as ObjectMessage payload.ActiveMQ序列化设置

时间:2022-11-02 10:44:52浏览次数:55  
标签:ActiveMQConnectionFactory serialized factory apache org 序列化 activemq class Objec

引子

  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

例如

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

-Dorg.apache.activemq.SERIALIZABLE_PACKAGES=*

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

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

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

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

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

或者通过设置prop完成

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

  

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

标签:ActiveMQConnectionFactory,serialized,factory,apache,org,序列化,activemq,class,Objec
From: https://www.cnblogs.com/ladyM/p/ActiveMQ.html

相关文章

  • android miui ActivityInjector: get life cycle exception java.lang.ClassCastExcep
    切换主题样式时,抛出的异常(虽然抛出了异常,但功能未受影响,也未崩溃)。原异常代码:E/ActivityInjector:getlifecycleexceptionjava.lang.ClassCastException:androi......
  • (转)hive中序列化和反序列化简介
    原文:https://blog.csdn.net/xixihaha_coder/article/details/121229591hive中序列化和反序列化简介serde简介hive的常用serdeLazySimpleSerDeCSVjsonserde......
  • UIPath踩坑记一 对 COM 组件的调用返回了错误 HRESULT E_FAIL。UiPath.UiNodeClass.In
      [ERROR] [UiPath.Studio] [1] 错误: System.Exception: 对 COM 组件的调用返回了错误 HRESULT E_FAIL。 ---> System.Exception: 对 COM 组件的调用返......
  • 学习笔记-JAVA反序列化
    JAVA反序列化免责声明本文档仅供学习和研究使用,请勿使用文中的技术源码用于非法用途,任何人造成的任何负面影响,与本人无关.简介序列化是让Java对象脱离Java运......
  • Java实现 Serializable 序列化
    深度理解Java实现Serializable序列化概念把对象转换为直接序列的过程叫对象的序列化把字节序列恢复为对象的过程叫对象的反序列化用途对象持久化跨网络数据交换,远程过程调......
  • Java学习之NoClassDefFoundError、ClassNotFoundException、NoSuchMethodError
    在菜逼如我短短的三年职业编码生涯中,无数次遇到这两个异常,故而总结一下。Java异常体系大致提一些,不是本文的重点。两者都是标准异常,平时碰到最多的是ClassNotFoundExceptio......
  • PHP反序列化做题方法
    1.简化:把PHP代码复制到编辑器里面,寻找PHP反序列化的魔术方法,然后把不需要的部分删去2.找链子:通过以知的魔术方法,寻找到可以利用的点,然后想办法通过对象与方法的调用执行......
  • vue动态绑定class的几种方式
    开发项目中:vue动态绑定class的几种方式~第一种:(最简单的绑定)1.绑定单个classhtml部分: <div:class="{'active':isActive}"></div>js部分:判断是否绑定一个activedat......
  • 学习笔记-PHP反序列化
    PHP反序列化相关文章&Source&ReferenceWeb安全|PHP反序列化入门这一篇就够了php反序列化练习题php反序列化知识点总结相关工具php在线反序列化工具PHP......
  • class类
    三种方式获得class类对象:getclass();使用频率少,必须先有对象才可以调用该方法,一般不用Studentstudent=newStudent();Class<?extendsStudent>aClass=student.g......