38 | 对象序列化的危害有多大?
范学雷
该思维导图由 AI 生成,仅供参考
如果一个函数或者对象,不管它位于多么遥远的地方,都可以在本地直接被调用,那该有多好呀!这是一个非常朴素、美好的想法。基于这个设想,诞生了很多伟大的技术和协议,比如远程过程调用(RPC)、远程方法调用(RMI)、分布式对象(Distributed Object)、组件对象模型(COM)、公共对象请求代理(CORBA)和简单对象访问协议(SOAP)等……这个列表还可以很长很长。
躲在这些协议背后的核心技术之一,就是序列化。简单地说,序列化就是要把一个使用场景中的一个函数或者对象以及它们的执行环境,打包成一段可以传输的数据,然后把该数据传输给另外一个使用场景。在这个使用场景中,该数据被拆解成适当的函数或者对象,包括该函数或者对象的执行环境。这样,该函数或者对象就可以在不同的场景下使用了。
数据拆解的过程,就是反序列化。打包、传输、拆解是序列化技术的三个关键步骤。由于传输的是数据,打包和拆解可能使用不同的编程语言,运行在不同的操作系统上。这样就带来了跨平台和跨语言的好处。而数据能够传输,就意味着可以带来分布式的好处。数据当然也可以存储,而可以存储意味着相关对象的生命周期的延长,这是不是也是一个非常值得兴奋的特点?
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
序列化技术的美好想法带来了众多技术和协议,但也存在着潜在的安全风险。本文以Java语言为例,探讨了序列化技术可能带来的问题,并提出了相应的防护措施。序列化过程中可能泄露敏感数据,导致数据被篡改,甚至与大约一半的Java漏洞有关。针对这些问题,文章提出了不支持序列化、排除敏感数据、指定可序列化字段等防护方法。此外,还介绍了实现writeObject、writeReplace和Externalizable接口等方法。总之,文章强调了序列化技术的安全问题,并提出了多种防护措施,以应对可能的安全风险。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《代码精进之路》,新⼈⾸单¥59
《代码精进之路》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(10)
- 最新
- 精选
- 杨孔来如果不用序列化,有哪些替代方案
作者回复: HTTP/Web
2019-04-016 - 唐名之那我们平常用的rpc 框架dubbo也会有这个序列化安全问题吧,如果想加上签名验证感觉成本又比较大
作者回复: RPC一般要求在可信任的环境下使用。 检查使用环境,看看能不能切断外部修改、监听的可能性。
2019-04-194 - hua1681. 习题:birthday和socialSecurityNumber是敏感数据,不能序列化。 2. 现在序列化不是用json格式比较多吗,好处,可以跨语言、平台 3. 如果用序列化的话,数据传输用https+token(JSON Web Token)会不会解决?
作者回复: #3,双向认证,数据加密的场景可以。
2019-04-034 - Jerry Chan不能序列化,能保存翻数据库里面去吗?
作者回复: 保存到数据库里,其实也是一种序列化的形式。 这样的设计,需要把对象和数据库保护起来,切断中间攻击的机会。
2019-04-142 - alan老师好,请教一个问题,我没有接触过Java,平时主要用Golang,用到了大量的json.Marshal方法,我平时管这个也叫序列化。不知老师是否了解json.Marshal,这跟Java的序列化有什么区别吗,还是只是恰好同名?
作者回复: 序列化是一个运用广泛的技术,不独Java有。序列化的问题也有普遍性。不过,不同的对象,使用的场景不同,所以威胁也有很大区别。我没有研究过JSON的序列化,抱歉不能给你更多的建议。
2019-04-012 - 小钟请问老师 https不能解决这个问题吗?
作者回复: 可以的,双向认证的HTTPS或者TLS可以搭建一个可信的环境。
2019-07-141 - KingSwim不能加密之后系列化么,然后拿到数据解密再反系列化?
作者回复: 可以,但是两端要持有相同的密钥。密钥的协商和分享很困难。
2019-04-01 - ifelse序列化技术不是一个有安全保障的技术,序列化数据的传输和拆解过程都可能被攻击者利用;要尽量避免敏感信息的序列化。--记下来2022-08-01归属地:浙江
- ifelse社会信用代码和生日不要序列化2022-08-01归属地:浙江
- 丁丁历险记之前做redo undo 都用的序列化。还好每步操作都要重新鉴权2019-10-15
收起评论