一、前言
Java 的序列化與反序列化機制,允許將對象的狀態轉化為字節流,並從字節流重新構建對象。 然而,這種強大的功能也帶來了潛在的安全風險,特別是當反序列化來自不可信來源的數據時。 缺乏適當的安全措施,攻擊者可能利用反序列化漏洞執行任意代碼,造成嚴重後果。
在 Java 7 及更早版本中,保護反序列化安全主要依賴於在反序列化前驗證輸入流,或使用自定義的反序列化邏輯。 這些方法往往複雜且容易出錯。
自 Java 7 起,Java 逐步引入了反序列化過濾器 (Deserialization Filters) 機制,旨在提供更安全、更可控的反序列化流程。 從 Java 9 開始,該機制得到完善,允許開發者定義全局和特定於流的過濾器,以更有效地控制反序列化過程。 Java 15 进一步增强了过滤机制,使其更易用、高效。
本文整理 Java 7 至 17 關於反序列化過濾器的新特性,並提供範例,以助開發者理解和使用這些特性,提升應用程序的安全性。