- 13
- 0
- 约 53页
- 2017-06-26 发布于天津
- 举报
JAVA序列化的秘密.pdf
SecretofSerialization
liujia
[2011Q1]
[有关java 序列化的一些琐事]
目录
为什么要有序列化3
序列化都干些啥4
首要问题:反序列化时如何生成实例5
是不是所有的类都需要序列化6
哪些东西需要序列化7
用transient保护敏感信息15
序列化算法15
定制自己的序列化算法24
严重漏洞:刻舟求剑32
单例模式不过是浮云34
同引用实例化问题37
常见的序列化攻击39
百家争鸣:hessian和mina也玩序列化43
工作中需要注意的点49
附录1ObjectOutputStream和ObjectInputStream50
附录2Serializable中的隐藏方法一览51
参考文献52
序列化的秘密
为什么要有序列化
任何事物的产生都是有其原因的,序列化也不例外。要说到序列化的起源,还得从最基本的 java
程序说起(本文介绍的是 java 序列化)。啥是 java 程序,简单来说就是一个进程一块内存,进程根据
类生成一堆实例,并放到内存中,这些实例进行交互运算,最终产生我们想要的结果。如下图所示:
图:java程序示意图
这样就有了一个依赖关系,即内存中的对象依赖于内存,而内存又依赖于进程。这个很好解释,
如果进程停止了,内存就被回收了;内存被回收了,内存中的对象也就 destroy 了。
这就产生了很大的限制,举几个例子:
1、一个程序停止了,内存中的对象也没了。但如果我想在新的程序中使用之前那个对象,该怎
么办?
2、网络上传输对象(网络两端不共享内存)
3、远程接口调用,两端在各自的虚拟机中运行,当然内存也不共享,那入参和结果如何传递?
4、….
序列化就是来解决这些问题的。虽然内存不共享,但我们可以将对象转化为一段字节序列,并放
到流中,接下来就交给 I/O,可以存储在文件中、可以通过网络传输…;当我们想用到这些对象的时
候,再通过 I/O,从文件、网络上读取字节序列,根据这些信息重建对象。
序列化都干些啥
上面已经介绍了需要序列化的原因,并简单说了一下序列化做的事情,概括起来就是下面这张图:
obj obj
序列化
反序列化
0x01 ….0x02 outputStream inputStream 0x01 ….0x02
文件
数据库
网络
顺便也解释了一下“反序列化”,反序列化就是序列化的逆过程,将对象还原的过程。不要认为
“反序列化”不重要,如果没有“反序列化”,那么“序列化”是没有任何意义的,光保存对象而用
不上,这傻事谁干啊。
再简单地照着这个图说下序列化的过程,不过这么几件事:
1、根据某种序列化算法(详见序列化算法),将对象转换为字节序列
2、将这个字节序列通过输出流写入到载体中(文件、数据库、网络等),详见附录 1
ObjectOutputStream 和 ObjectInputStream
3、字节序列通过载体进行保存/传输
4、当要用到这些对象的时候,程序通过输入流从载体中读取出字节序列
5、根据某种反序列化算法,将字节序列转换为对象,详见序列化算法
虽然过程很简单,但里面却有很多说道,下面就逐一介绍。
首要问题:反序列化时如何生成实例
为什么要谈这个问题呢,还是首要问题?有两个原因:
1、 正如上面说的,不能反序列化的序列化是没意义的,好像有点绕。再通
您可能关注的文档
- BIOS调教大师笔记_二_BIOS升级与失败处理.pdf
- Blos设置U盘启动图文教程_超详细!!!.doc
- C#简单超市收银系统源码.doc
- Core i5核心苹果MacBook Pro拆解.doc
- dcs工程实施中的流量补偿计算.pdf
- DELL戴尔 全新Vostro成就V131-258笔记本电脑.doc
- DN1200闸阀使用说明书.pdf
- Fujitsu LifeBook LH531 使用说明书.pdf
- Fujitsu LifeBook LH532 使用说明书.pdf
- Gateway改变模式 重返中国.pdf
- 2025-2026学年天津市和平区高三(上)期末数学试卷(含解析).pdf
- 2025-2026学年云南省楚雄州高三(上)期末数学试卷(含答案).pdf
- 2025-2026学年甘肃省天水市张家川实验中学高三(上)期末数学试卷(含答案).docx
- 2025-2026学年福建省厦门市松柏中学高二(上)期末数学试卷(含答案).docx
- 2025-2026学年广西钦州市高一(上)期末物理试卷(含答案).docx
- 2025-2026学年河北省邯郸市临漳县九年级(上)期末化学试卷(含答案).docx
- 2025-2026学年河北省石家庄二十三中七年级(上)期末历史试卷(含答案).docx
- 2025-2026学年海南省五指山市九年级(上)期末化学试卷(含答案).docx
- 2025-2026学年河北省唐山市玉田县九年级(上)期末化学试卷(含答案).docx
- 2025-2026学年河北省邢台市市区九年级(上)期末化学试卷(含答案).docx
原创力文档

文档评论(0)