Oracle:Java 的序列化就是個錯誤,我們要刪掉它!

點擊上方“CSDN”,選擇關注

關鍵時刻,第一時間送達!

Oracle:Java 的序列化就是個錯誤,我們要刪掉它!

作者 | 琥珀

出品 | CSDN

此前,Java提供了一種機制叫做序列化,即通過有序的格式或字節序列持久化Java對象,包括對象的數據、類型,以及保存在對象中的數據類型。簡單來說,就是把對象轉換為字節序列的過程。萬萬沒想到,若干年後,Oracle意識到了Java存在的序列化漏洞,並決心剔除該特性!

近日,據外媒InfoWorld報道稱,Oracle正計劃從Java中去除序列化特性,一直以來,這在安全方面都是一個棘手的問題。該功能也稱為“對象序列化”,主要將對象編碼為字節流形式。除了用於輕量化持久性,以及通過套接字或Java RMI進行通信之外,序列化功能還支持從字節流中重構對象圖。

據瞭解,該公司Java平臺部門首席架構師Mark Reinhold表示,

“去除序列化是一項長期目標,也是Project Amber的一部分,它專注於面向生產力的Java語言特性。”

為了替換當前的序列化技術,一旦記錄,會在平臺中放置一個小的序列化框架,支持 Java 版本的數據類。該框架可以支持記錄圖形,開發人員可以插入他們選擇的序列化引擎,支持 JSON 或 XML 等格式,從而以安全的方式序列化記錄。 但 Reinhold 還不能確定哪個版本的 Java 將具有記錄功能。

Reinhold還提到:序列化是1997 年犯下的一個“可怕的錯誤”。他估計,至少有三分之一甚至是一半的Java漏洞與序列化有關。總體上,序列化是脆弱的,但具有在單一案例中易於使用的特性。

最近,Java剛剛添加了過濾功能,因此如果(開發者)必須接受自網絡上使用序列化且接受不受信任的序列化數據流,則可以藉此選擇需要過濾掉的類以實現針對序列化安全弱點的防禦機制。

Reinhold指出,Oracle目前收到很多運行在網絡上的應用服務器的報告,其中未受保護的端口上使用序列化流,這就是過濾功能開發的原因。

參考鏈接:

https://www.infoworld.com/article/3275924/java/oracle-plans-to-dump-risky-java-serialization.html


分享到:


相關文章: