代码精进之路
范学雷
Oracle首席软件工程师,Java SE安全组成员,OpenJDK评审成员
立即订阅
6317 人已学习
课程目录
已完结 47 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词 | 你写的每一行代码,都是你的名片
免费
第一模块:代码“规范”篇 (16讲)
01 | 从条件运算符说起,反思什么是好代码
02 | 把错误关在笼子里的五道关卡
03 | 优秀程序员的六个关键特质
04 | 代码规范的价值:复盘苹果公司的GoToFail漏洞
05 | 经验总结:如何给你的代码起好名字?
06 | 代码整理的关键逻辑和最佳案例
07 | 写好注释,真的是小菜一碟吗?
08 | 写好声明的“八项纪律”
09 | 怎么用好Java注解?
10 | 异常处理都有哪些陷阱?
11 | 组织好代码段,让人对它“一见钟情”
12丨组织好代码文件,要有“用户思维”
13 | 接口规范,是协作的合约
14 | 怎么写好用户指南?
15 | 编写规范代码的检查清单
16丨代码“规范”篇用户答疑
第二模块:代码“经济”篇 (14讲)
17 | 为什么需要经济的代码?
18丨思考框架:什么样的代码才是高效的代码?
19 | 怎么避免过度设计?
20 | 简单和直观,是永恒的解决方案
21 | 怎么设计一个简单又直观的接口?
22丨高效率,从超越线程同步开始!
23 | 怎么减少内存使用,减轻内存管理负担?
24 | 黑白灰,理解延迟分配的两面性
25 | 使用有序的代码,调动异步的事件
26 | 有哪些招惹麻烦的性能陷阱?
27 | 怎么编写可持续发展的代码?
28 | 怎么尽量“不写”代码?
29 | 编写经济代码的检查清单
30丨“代码经济篇”答疑汇总
第三模块:代码“安全”篇 (14讲)
31 | 为什么安全的代码这么重要?
32 | 如何评估代码的安全缺陷?
33 | 整数的运算有哪些安全威胁?
34 | 数组和集合,可变量的安全陷阱
35 | 怎么处理敏感信息?
36 | 继承有什么安全缺陷?
37 | 边界,信任的分水岭
38 | 对象序列化的危害有多大?
39 | 怎么控制好代码的权力?
40 | 规范,代码长治久安的基础
41 | 预案,代码的主动风险管理
42 | 纵深,代码安全的深度防御
43 | 编写安全代码的最佳实践清单
44 | “代码安全篇”答疑汇总
加餐 (1讲)
Q&A加餐丨关于代码质量,你关心的那些事儿
结束语 (1讲)
结束语|如何成为一个编程好手?
代码精进之路
登录|注册

38 | 对象序列化的危害有多大?

范学雷 2019-04-01
如果一个函数或者对象,不管它位于多么遥远的地方,都可以在本地直接被调用,那该有多好呀!这是一个非常朴素、美好的想法。基于这个设想,诞生了很多伟大的技术和协议,比如远程过程调用(RPC)、远程方法调用(RMI)、分布式对象(Distributed Object)、组件对象模型(COM)、公共对象请求代理(CORBA)和简单对象访问协议(SOAP)等……这个列表还可以很长很长。
躲在这些协议背后的核心技术之一,就是序列化。简单地说,序列化就是要把一个使用场景中的一个函数或者对象以及它们的执行环境,打包成一段可以传输的数据,然后把该数据传输给另外一个使用场景。在这个使用场景中,该数据被拆解成适当的函数或者对象,包括该函数或者对象的执行环境。这样,该函数或者对象就可以在不同的场景下使用了。
数据拆解的过程,就是反序列化打包、传输、拆解是序列化技术的三个关键步骤。由于传输的是数据,打包和拆解可能使用不同的编程语言,运行在不同的操作系统上。这样就带来了跨平台和跨语言的好处。而数据能够传输,就意味着可以带来分布式的好处。数据当然也可以存储,而可以存储意味着相关对象的生命周期的延长,这是不是也是一个非常值得兴奋的特点?
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《代码精进之路》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(8)

  • alan
    老师好,请教一个问题,我没有接触过Java,平时主要用Golang,用到了大量的json.Marshal方法,我平时管这个也叫序列化。不知老师是否了解json.Marshal,这跟Java的序列化有什么区别吗,还是只是恰好同名?

    作者回复: 序列化是一个运用广泛的技术,不独Java有。序列化的问题也有普遍性。不过,不同的对象,使用的场景不同,所以威胁也有很大区别。我没有研究过JSON的序列化,抱歉不能给你更多的建议。

    2019-04-01
    2
  • 杨孔来
    如果不用序列化,有哪些替代方案

    作者回复: HTTP/Web

    2019-04-01
    2
  • 小钟
    请问老师 https不能解决这个问题吗?

    作者回复: 可以的,双向认证的HTTPS或者TLS可以搭建一个可信的环境。

    2019-07-14
    1
  • 唐名之
    那我们平常用的rpc 框架dubbo也会有这个序列化安全问题吧,如果想加上签名验证感觉成本又比较大

    作者回复: RPC一般要求在可信任的环境下使用。 检查使用环境,看看能不能切断外部修改、监听的可能性。

    2019-04-19
    1
  • Jerry Chan
    不能序列化,能保存翻数据库里面去吗?

    作者回复: 保存到数据库里,其实也是一种序列化的形式。 这样的设计,需要把对象和数据库保护起来,切断中间攻击的机会。

    2019-04-14
    1
  • hua168
    1. 习题:birthday和socialSecurityNumber是敏感数据,不能序列化。

    2. 现在序列化不是用json格式比较多吗,好处,可以跨语言、平台

    3. 如果用序列化的话,数据传输用https+token(JSON Web Token)会不会解决?

    作者回复: #3,双向认证,数据加密的场景可以。

    2019-04-03
    1
  • 丁丁历险记
    之前做redo undo 都用的序列化。还好每步操作都要重新鉴权
    2019-10-15
  • KingSwim
    不能加密之后系列化么,然后拿到数据解密再反系列化?

    作者回复: 可以,但是两端要持有相同的密钥。密钥的协商和分享很困难。

    2019-04-01
收起评论
8
返回
顶部