JDK 11:Java序列化的终结开始了吗?
在博客文章“ 将Google的协议缓冲区与Java结合使用 ”中,我引用了乔什·布洛赫(Josh Bloch)的第三版的有效Java ,他写道:“没有理由在您编写的任何新系统中使用Java序列化。” Bloch建议使用“跨平台结构化数据表示形式”,而不是Java的反序列化。
拟议的JDK 11 API文档将包含有关使用Java反序列化的更强有力的声明, 本文将对此进行简要介绍。
“ Java SE 11(18.9) ( JSR 384 )”规范的第二稿包括一个称为“ API Specification Differences”的“ A2附件”,其中包括对基于Javadoc的java.io软件包的更改。 新的java.io
软件包文档将包含以下高级警告注释:
警告:不信任数据的反序列化本质上是危险的,应避免。 应根据Java SE安全编码指南中的“ 序列化和反序列化 ”部分,仔细验证不可信数据。
在撰写本文时,所引用的Java SE安全编码准则指出其当前为6.0版,并且已“针对Java SE 9更新”。
JDK 11中软件包java.io
的预期软件包级文档还将提供指向以下其他参考的链接(但可能是基于JDK 11的参考):
- Java对象序列化规范 (JDK 10链接)
- 串行过滤最佳实践 (JDK 10链接)
- serialver工具 (JDK 10链接)
以前指向“ Java Object Serialization ”(JDK 8)文档的参考链接将从java.io
的软件包文档中删除。
除了将在JDK 11中更新的与Java反序列化的危险有关的java.io
软件包文档之外, java.io.Serializable接口的Javadoc注释也收到了类似的高级警告消息。
鉴于过去几年中有关Java序列化和反序列化的各种声明,对JDK 11中基于Javadoc文档的这些更改不足为奇。 “ RFR 8197595:序列化javadoc应该链接到安全性最佳实践 ”,特别说明了添加此文档的必要性。 最近的InfoWorld文章名为“ Oracle计划转储有风险的Java序列化 ”和ADT杂志上的文章“ 从Java删除序列化是Oracle的 “ 长期目标” ”引用了Mark Reinhold在Devoxx UK 2018上的声明, 即向 Java添加序列化是“ 1997年的可怕错误”。
之前曾有讨论删除Java序列化。 JEP 154:创建删除序列化的目的是“弃用,禁用并最终删除Java SE Platform的序列化工具。” 但是,JEP的状态现在为“已关闭/已撤回”。 不过,随着有关删除Java序列化的讨论越来越多,为所有新系统考虑Java序列化的替代方法似乎是审慎的做法,这正是Bloch在Effective Java 第三版中的建议 。 所有这些,Apostolos Giannakidis在博客文章“ 序列化已死! 序列化万岁! ”表示“反序列化漏洞不会消失”,因为“ Java的本机序列化不是唯一有缺陷的序列化技术。”
其他参考
- Java对象序列化规范
- JDK 10:序列化过滤
- 从Java中删除序列化是Oracle的“长期目标”
- 序列化已死! 序列化万岁!
- Java的新(有缺陷的)序列化过滤初探
- Java反序列化的风险
- 序列化不是Java的Heartbleed Bug
- Java反序列化安全性常见问题解答
- 幸存的Java反序列化启示录 (OWASP AppSecEU 2016)
- CWE-502:不信任数据的反序列化
翻译自: https://www.javacodegeeks.com/2018/06/beginning-end-java-serialization.html
JDK 11:Java序列化的终结开始了吗?相关推荐
- java jdk 序列化_JDK 11:Java序列化的终结开始了吗?
java jdk 序列化 在博客文章" 将Google的协议缓冲区与Java结合使用 "中,我引用了乔什·布洛赫(Josh Bloch)的第三版的有效Java ,他写道:" ...
- Java JDK 11:现在可以使用所有新功能
为什么80%的码农都做不了架构师?>>> 删除了CORBA,Java EE和JavaFX支持,但添加了十几个主要新功能 目录 哪里可以下载JDK 11 Java 11 JDK中 ...
- krait和kryo_各种Java序列化性能比较
并发主题 各种Java序列化性能比较 这里比较Java对象序列化 XML JSON Kryo POF等序列化性能比较. 很多人以为JDK的Java序列化肯定是将Java对象转换成二进制序列化最快的方式 ...
- Java序列化案例demo(包含Kryo、JDK原生、Protobuf、ProtoStuff以及hessian)
文章目录 前言 一.Kryo序列化(优先选择) 介绍 快速开始 测试 二.JDK原生序列化 介绍 快速开始 测试 三.Protobuf序列化 介绍 快速开始 测试 四.ProtoStuff 介绍 快速 ...
- java11模块化开发_【JDK 11】关于 Java 模块系统,看这一篇就够了
继 2014 年 3 月 Java 8 发布之后,时隔 4 年,2018 年 9 月,Java 11 如期发布,其间间隔了 Java 9 和 Java 10 两个非LTS(Long Term Supp ...
- java jdk设置字符集_使用JDK 11在Java字符串上的新方法
java jdk设置字符集 Java的String类似乎将在JDK 11中获得一些新方法,该方法将于2018年9月发布. 错误号 错误标题 新的String方法 描述 JDK-8200425 字符串: ...
- JDK 11:轻松取出单文件Java源代码程序
JDK 11 Early Access Builds包含与JEP 330相关的预览功能("启动单个文件源代码程序"). 我之前在" Shebang即将来到Java? &q ...
- 使用JDK 11在Java字符串上的新方法
Java的String类似乎将在JDK 11中获得一些新方法,该方法将于2018年9月发布. 错误号 错误标题 新的String方法 描述 JDK-8200425 字符串::行 lines() &qu ...
- Java 答疑:JDK 11(Java 11)之后没有 JRE 目录,环境用户变量配置的解决方法
文章目录 前言 一.JDK 11(Java 11)之后 JRE 说明 二.选择自己需要的 JDK 版本 三.对下载的 JDK 进行解压 四.执行 Dos 命令生成 JRE 总结 前言 我们之前的 JD ...
最新文章
- 在Cuda上部署量化模型
- HttpServletResponse 的 sendError( )方法以及常用的HttpServletResponse常量级错误代码
- Java中传值与传地址
- MySQL排序查询介绍
- Linux 命令之 tcpdump -- 监听网络流量
- [Tarjan] 洛谷 P1726 上白泽慧音
- 采用Docker集成jquery-file-upload组件到WEB应用
- 02_HBase集群部署
- tomcat 调优-生产环境必备
- hplus--H+ V2.3 (中文版)
- 【乌拉喵.教程】TestBench仿真给输出脚赋值引起的问题
- 微软商店错误代码: 0x80131500解决方案
- 模板类和友元的总结和实例验证
- 金融产品经理的新方向:供应链金融
- 关于荣耀che1-cl20手机制作服务器失败的事
- 使用JQuery快速高效制作网页交互特效第九章所有上机
- 手机软键盘弹起导致页面变形的一种解决方案
- 多行溢出隐藏的解决办法
- Error 1962:No operating system found. Boot sequence will automatically repeat.--解决办法
- 故障插入测试技术研究
热门文章
- hihocoder1147 时空阵(bfs树+DP)
- 动态规划训练9 [Brackets POJ - 2955 ]
- SpringBoot2.1.9 多Kafka消费者配置
- Java 正则表达式匹配模式[贪婪型、勉强型、占有型]
- EL调用java方法
- 07-MyBatis 核心配置文件
- selenium以及chromdrive安装
- asp.net中条件查询+分页
- 2017蓝桥杯省赛---java---A---7(正则问题)
- 基本类型和字符串互相转换