java jdk 序列化_JDK 11:Java序列化的终结开始了吗?
java jdk 序列化
在博客文章“ 將Google的協(xié)議緩沖區(qū)與Java結(jié)合使用 ”中,我引用了喬什·布洛赫(Josh Bloch)的第三版的有效Java ,他寫(xiě)道:“沒(méi)有理由在您編寫(xiě)的任何新系統(tǒng)中使用Java序列化。” Bloch建議使用“跨平臺(tái)結(jié)構(gòu)化數(shù)據(jù)表示形式”,而不是Java的反序列化。
擬議的JDK 11 API文檔將包含有關(guān)使用Java反序列化的更強(qiáng)有力的聲明, 本文將對(duì)此進(jìn)行簡(jiǎn)要介紹。
“ Java SE 11(18.9) ( JSR 384 )”規(guī)范的第二稿包含一個(gè)稱(chēng)為“ API規(guī)范差異 ”的“ A2附件”,其中包括對(duì)基于Javadoc的java.io包文檔所做的更改。 新的java.io軟件包文檔將包含以下高級(jí)警告注釋:
警告:不信任數(shù)據(jù)的反序列化本質(zhì)上是危險(xiǎn)的,應(yīng)避免。 應(yīng)根據(jù)Java SE安全編碼指南中的“ 序列化和反序列化 ”部分,仔細(xì)驗(yàn)證不可信數(shù)據(jù)。
在撰寫(xiě)本文時(shí),所引用的Java SE安全編碼指南指出其當(dāng)前為6.0版,并且已“針對(duì)Java SE 9更新”。
JDK 11中軟件包java.io的預(yù)期軟件包級(jí)文檔還將提供指向以下附加引用的鏈接(但可能是基于JDK 11的引用):
- Java對(duì)象序列化規(guī)范 (JDK 10鏈接)
- 串行過(guò)濾最佳實(shí)踐 (JDK 10鏈接)
- serialver工具 (JDK 10鏈接)
以前指向“ Java對(duì)象序列化 ”(JDK 8)文檔的參考鏈接將從java.io的軟件包文檔中刪除。
除了將在JDK 11中更新的與Java反序列化的危險(xiǎn)有關(guān)的java.io軟件包文檔之外, java.io.Serializable接口的Javadoc注釋也收到了類(lèi)似的高級(jí)警告消息。
鑒于過(guò)去幾年中有關(guān)Java序列化和反序列化的各種聲明,對(duì)JDK 11中基于Javadoc文檔的這些更改不足為奇。 “ RFR 8197595:序列化javadoc應(yīng)該鏈接到安全性最佳實(shí)踐 ”,特別說(shuō)明了添加此文檔的必要性。 最近的InfoWorld文章名為“ Oracle計(jì)劃轉(zhuǎn)儲(chǔ)有風(fēng)險(xiǎn)的Java序列化 ”,而ADT雜志上的文章“ 從Java刪除序列化是Oracle的 “ 長(zhǎng)期目標(biāo)” ”引用了Mark Reinhold在Devoxx UK 2018上的聲明, 即向 Java添加序列化是“ 1997年的可怕錯(cuò)誤。”
之前曾經(jīng)有過(guò)討論刪除Java序列化。 JEP 154:創(chuàng)建刪除序列化的目的是“棄用,禁用并最終刪除Java SE Platform的序列化工具。” 但是,JEP的狀態(tài)現(xiàn)在為“已關(guān)閉/已撤回”。 不過(guò),隨著有關(guān)刪除Java序列化的討論越來(lái)越多,為所有新系統(tǒng)考慮Java序列化的替代方法似乎是審慎的做法,這正是Bloch在Effective Java 第三版中的建議 。 所有這些,Apostolos Giannakidis在博客文章“ 序列化已死! 序列化萬(wàn)歲! ”表示“反序列化漏洞不會(huì)消失”,因?yàn)椤?Java的本機(jī)序列化不是唯一有缺陷的序列化技術(shù)。”
其他參考
- Java對(duì)象序列化規(guī)范
- JDK 10:序列化過(guò)濾
- 從Java刪除序列化是Oracle的“長(zhǎng)期目標(biāo)”
- 序列化已死! 序列化萬(wàn)歲!
- Java的新(有缺陷的)序列化過(guò)濾初探
- Java反序列化的風(fēng)險(xiǎn)
- 序列化不是Java的Heartbleed Bug
- Java反序列化安全性常見(jiàn)問(wèn)題解答
- 幸存的Java反序列化啟示錄 (OWASP AppSecEU 2016)
- CWE-502:不可信數(shù)據(jù)的反序列化
翻譯自: https://www.javacodegeeks.com/2018/06/beginning-end-java-serialization.html
java jdk 序列化
總結(jié)
以上是生活随笔為你收集整理的java jdk 序列化_JDK 11:Java序列化的终结开始了吗?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 微信怎么链接网页(微信怎么链接网页打印)
- 下一篇: 怎么让网页在搜索关键字时出现(怎么让网页