Java序列化和反序列化
一、序列化和反序列化
1、含义
序列化就是内存中的对象写入到IO流中,保存的格式可以是二进制或者文本内容。反序列化就是IO流还原成对象。
2、用途
(1)传输网络对象
(2)保存Session
二、Java序列化演示
1、序列化
java.io.ObjectOutputStream代表对象输出流,它的writeObject()方法可对参数指定的对象进行序列化,把得到的字节序列写到一个目标输出流中。
2、反序列化
java.io.ObjectInputStream代表对象输入流,它的readObject()方法从一个源输入流中读取字节序列,再把它们反序列化为一个对象,并将其返回。
三、反序列化漏洞
1、如果某个类需要自定义反序列化方式,可以重写类的readObject()方法。
2、在反序列化的过程中,会调用这个类的重写readObject()方法。
3、如果readObject()方法的代码有一些敏感操作,就可能会引发漏洞。