什么是序列化
我们的对象并不只是存在内存中,还需要传输网络,或者保存起来下次再加载出来用,所以需要Java序列化技术。
Java序列化技术正是将对象转变成一串由二进制字节组成的数组,可以通过将二进制数据保存到磁盘或者传输网络,磁盘或者网络接收者可以在对象的属类的模板上来反序列化类的对象,达到对象持久化的目的。
怎么序列化一个对象?
要序列化一个对象,这个对象所在类就必须实现Java序列化的接口:java.io.Serializable。
1、类添加序列化接口
2、序列化/反序列化
可以借助commons-lang3工具包里面的类实现对象的序列化及反序列化,你没有必要自己写。
import org.apache.commons.lang3.SerializationUtils;
public class Test
{
public static void main(String[] args)
{
User user = new User();
user.setUsername("Java");
user.setAddress("China");
byte[] bytes = SerializationUtils.serialize(user);
User u =SerializationUtils.deserialize(bytes);
System.out.println(u);
}
}
上例通过序列化对象字节到内存然后反序列化,当然里面也提供了序列化磁盘然后再反序列化的方法,原理都是一样的,只是目标地不一样。
序列化注意事项
序列化对象必须实现序列化接口。
序列化对象里面的属性是对象的话也要实现序列化接口。
类的对象序列化后,类的序列化ID不能轻易修改,不然反序列化会失败。
类的对象序列化后,类的属性有增加或者删除不会影响序列化,只是值会丢失。
如果父类序列化了,子类会继承父类的序列化,子类无需添加序列化接口。
如果父类没有序列化,子类序列化了,子类中的属性能正常序列化,但父类的属性会丢失,不能序列化。
用Java序列化的二进制字节数据只能由Java反序列化,不能被其他语言反序列化。如果要进行前后端或者不同语言之间的交互一般需要将对象转变成Json/Xml通用格式的数据,再恢复原来的对象。
如果某个字段不想序列化,在该字段前加上transient关键字即可。
分享到:
相关推荐
描述中的"weblogic反序列化工具"和"jboss反序列化工具"提到了两个特定的应用服务器——WebLogic和JBoss。WebLogic是Oracle公司的一个企业级应用服务器,而JBoss则是Red Hat公司的开源Java EE应用服务器。这两个...
在Java开发中,msgpack工具库提供了对这种二进制序列化和反序列化的支持,尤其适用于大数据处理、网络通信以及分布式系统中的数据交换。 **序列化与反序列化** 序列化是将对象转换为可存储或可传输的形式的过程,...
标题中的“反序列化工具”通常是指用于检测和测试这些安全漏洞的软件。例如,`Burpsuite Pro`是一款著名的网络安全测试工具,特别是对于Web应用的安全评估,包括Java反序列化漏洞的检测。它提供了一个完整的框架,...
ShiroExploit.V2.51是一款专注于Apache Shiro框架的反序列化利用工具。Apache Shiro是一款流行的Java安全框架,用于身份认证、授权和会话管理。由于其广泛的使用,Shiro中的反序列化漏洞成为了黑客关注的焦点。...
Apache Common Math 2.2 API CHM 英文文档。 注意:如果你下载后打开右侧页面出现该页无法显示情况,请在CHM件中右键-属性,在下面点击-解除锁定。之后再打开文档即可。
基于“Apache Shiro反序列化”漏洞谈网络安全问题防范.pdf
用于压缩/解压缩的java开发工具包,基本上主流格式全包含,其中apache-common-compress内有5个jar包,两个是test的不用管,剩余三个,一个是源码包,一个是开发包另一个是javadoc。解压除RAR外的所有格式。 apache-...
在"shiro反序列化工具,加强版"这个主题中,我们主要关注的是Shiro框架中可能存在的反序列化漏洞以及如何利用和防范这些漏洞。 反序列化漏洞是由于程序在接收到网络传输的数据后,将其从二进制流恢复为对象时没有...
《反序列化利用工具ShiroExploit.V2.51:深入理解与应用》 在信息安全领域,漏洞检测是至关重要的工作,它可以帮助我们发现并修复系统中的安全风险,防止恶意攻击者利用这些漏洞对系统造成破坏。ShiroExploit.V2.51...
2. commons-lang3-3.3.2.jar:Apache Commons Lang库提供了许多实用的Java语言功能,包括序列化和反序列化的辅助工具,如`SerializationUtils`类,可用于简化对象的序列化和反序列化操作。 3. commons-beanutils-...
Apache Shiro 的反序列化机制存在漏洞,该漏洞允许攻击者在服务器上执行恶意命令。Shiro 的反序列化机制使用 Java 的反序列化机制,将用户输入的数据反序列化为 Java 对象。如果攻击者可以控制用户输入的数据,就...
该压缩包文件包含的`shiro_tool.jar`很可能是一个专门用于检测Apache Shiro反序列化漏洞的工具。使用方法如描述所示,通过命令行输入`java -jar shiro_tool.jar`后跟目标服务器的URL,工具会尝试识别并测试该服务器...
3. **使用安全的序列化库**:考虑使用更安全的库,如Apache Commons Lang的SerializationUtils,它们提供更安全的反序列化方法。 4. **更新和补丁**:及时更新服务器软件,安装官方发布的安全补丁。 5. **防御性编程...
`util.jar`可能包含一些实用工具类,可能用于处理序列化和反序列化操作。在安全背景下,这个库可能被检查以确定是否存在任何脆弱的反序列化代码。 利用Java反序列化漏洞通常涉及以下步骤: 1. 分析目标应用程序的...
4. **测试工具的作用**:这些Shiro反序列化测试工具通常会模拟恶意的序列化数据,尝试在目标系统上进行反序列化操作,以检测是否存在漏洞。通过这些工具,开发者可以发现并修复Shiro配置或代码中的潜在问题。 5. **...
标题 "shiro反序列化脚本.zip" 指向的是一个与Apache Shiro安全框架相关的反序列化漏洞利用工具。Apache Shiro是一款广泛使用的Java安全框架,它提供了身份验证、授权、会话管理和加密等功能。然而,在某些版本中,...
总结,Java的序列化与反序列化是强大的工具,能够帮助我们处理对象的持久化和网络传输。理解并熟练掌握这一技术,对提升Java开发能力具有重要意义。在实际应用中,要根据具体需求来选择合适的序列化库,如Google的...
"shiro反序列化工具"可能是一个用于测试或分析 Apache Shiro 应用程序中反序列化漏洞的工具。 反序列化是将已序列化的对象状态转换回其原始形式的过程。在 Java 中,这个过程通常由 `ObjectInputStream` 类来完成。...
1. **不安全的反序列化库**:某些Java库(如Apache Commons Collections)在反序列化时没有足够的安全性检查,可能导致远程代码执行。攻击者可以通过构造恶意的序列化对象来触发这些库的漏洞。 2. **未验证的数据源...
Apache Common API 是一系列由Apache软件基金会开发的Java库,这些库提供了各种实用工具和功能,以简化编程任务。本资源包含五个子项目的主要API文档,它们分别是BeanUtils、Collections、Configuration、Lang和...