java jdk 序列化_JDK 11:Java序列化的终结开始了吗?
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序列化的终结开始了吗?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微信怎么链接网页(微信怎么链接网页打印)
- 下一篇: java美元兑换,(Java实现) 美元