java jdk 序列化

在博客文章“ 将Google的协议缓冲区与Java结合使用 ”中,我引用了乔什·布洛赫(Josh Bloch)的第三版的有效Java ,他写道:“没有理由在您编写的任何新系统中使用Java序列化。” Bloch建议使用“跨平台结构化数据表示形式”,而不是Java的反序列化。

拟议的JDK 11 API文档将包含有关使用Java反序列化的更强有力的声明, 本文将对此进行简要介绍。

“ Java SE 11(18.9) ( JSR 384 )”规范的第二稿包含一个称为“ API规范差异 ”的“ 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对象序列化 ”(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

java jdk 序列化

java jdk 序列化_JDK 11:Java序列化的终结开始了吗?相关推荐

  1. jdk和java什么关系_jdk与java的关系是什么

    jdk是什么? jdk是对java基础环境和相应开发平台标准和工具包的封装(zip). 开发平台: j2se.j2ee.j2me 环境: 虚拟机.运行环境 jdk与java的关系 JDK是整个JAVA ...

  2. idea 配置jdk版本_JDK 11 安装过程(同时已安装了JDK 8)以及Intellij IDEA 配置

    电脑上已经安装过 JDK 8 版本(C:Javajdk1.8.0_111). 安装好 JDK 11 版本(C:Program FilesJavajdk-11.0.2)之后,目录如下,分别有: 安装过程 ...

  3. Java JDK 10:下一代 Java 有哪些新特性?

    点击上方"CSDN",选择"置顶公众号" 关键时刻,第一时间送达! 工欲善其事,必先利其器.作为老牌军 Java 在发行二十多年的今天,战胜了 C 和 C++, ...

  4. java jdk 7_jdk1.7下载|Java Development Kit (JDK) 下载「64位」-太平洋下载中心

    使用方法: 一.jdk1.7环境怎么配置? 1.右键计算机-->属性-->高级系统设置-->环境变量 jdk下载截图10 jdk下载截图11 2.在系统变量中新建 变量名:JAVA_ ...

  5. java jdk 8学习笔记,Java JDK 8学习笔记 PDF_源雷技术空间

    资源名称:Java JDK 8学习笔记 PDF 内容简介: ●本书是作者多年来教学实践经验的总结,汇集了学员在学习课程或认证考试中遇到的概念.操作.应用等问题及解决方案 ●针对Java SE 8新功能 ...

  6. Java JDK安装教程 Idea Java开发环境配置教程

    文章目录 1.JDK和JRE之间的区别与关系: 2. Java SE Development Kit 15 Downloads 3. 安装Java JDK 4. 验证JDK是否安装成功 5. 使用id ...

  7. java jdk 加密_jdk实现常见的加密算法

    Base64 内容加密 public static String encode(String str) { return Base64.getEncoder().encodeToString(str. ...

  8. JAVA JDK+Eclipse IDE for Java Developers下载

    链接:https://pan.baidu.com/s/1Tad84D6fAJ4A13yAiCWfFQ 提取码:m5hl

  9. linux centos7 安装gc,Linux(Centos7)安装Java JDK及卸载

    步骤一.下载安装包 a.因为Java JDK区分32位和64位,所以安装之前需先判断一下我们操作系统为多少位,命令如下: uname -a 解释:如果有x86_64就是64位的,没有就是32位的.后面 ...

最新文章

  1. 数据处理遇到麻烦不要慌,5个优雅的Numpy函数助你走出困境
  2. [一文一命令]head命令详解
  3. JSON之三:获取JSON文本并解释(以google的天气API为例)
  4. 《终身成长》读书笔记(part3)--如果一个人能学会什么东西,那么世界上其他人也都可以学会
  5. [css] 举例说明如何从html元素继承box-sizing?
  6. 【Java从0到架构师】git 核心原理和分支管理
  7. java开发个人项目_个人项目-WC (java实现)
  8. 如何扫描出Android系统媒体库中视频文件
  9. 【图像处理】基于matlab GUI美颜系统【含Matlab源码 809期】
  10. CPU自制入门 第三章 编程
  11. 三维空间数据建模——Smart3D的安装
  12. matlab 正则化表达式_MATLAB中常用的正则表达式
  13. iPhone 二手手机到底去哪了
  14. LPDDR4协议规范之 (四)命令和时序
  15. srp——点光源阴影的一些坑总结
  16. iOS 清理缓存方法
  17. Fractal Streets||分形之城
  18. Vue开发环境搭建和vue-cli脚手架
  19. 服务器上的404页面
  20. 10以内随机加、减法练习题

热门文章

  1. 互达的集合(线段树)
  2. CF444C-DZY Loves Colors【线段树,set】
  3. P2272-[ZJOI2007]最大半连通子图【tarjan,缩点】
  4. nssl1335-蛋糕切割【数论,GCD】
  5. P3128-最大流Max Flow【树上差分,LCA】
  6. 2021“MINIEYE杯”中国大学生算法设计超级联赛(2)I love counting(Trie树)
  7. codeforces1437 E. Make It Increasing——最长上升子序列
  8. 【莫队】区间不同数(金牌导航 莫队-1)
  9. 动态规划训练17 [Super Jumping! Jumping! Jumping! HDU - 1087 ]
  10. Oracle入门(九)之用户、角色与权限之间关系