JDK 17中的 java序列化過濾器 – Inside
序列化過濾器首次出現在JDK 9,在 JDK 17獲得更新,序列化過濾器使 Java 應用程式可以更好地控制傳入資料的反序列化方式。
Java 中的序列化長期以來一直是一個令人頭疼的問題,與它的實現方式有關的幾個問題有關。其中一些問題包括:
- 打破封裝
- 行為研究受控“魔術師”域和方法:readObject,writeObject,readObjectNoData,readResolve,writeReplace,等。
序列化過濾可用於保護您的應用程式免受不安全反序列化攻擊。
過濾可以透過一個模式進行配置,該模式可以基於以下條件進行過濾:
- 物件圖的最大深度
- 物件圖的最大引用數
- 物件圖的最大位元組數
- 最大陣列大小
- 根據類名、包名或模組名按型別允許或拒絕
閱讀此處瞭解如何構建模式。
三種使用方式
- 設定為安全屬性
在檔案:
$JAVA_HOME/conf/security/java.security
中新增:
jdk.serialFilterFactory=<pattern>
- 設定為 JVM 引數
-Djdk.serialFilter=<pattern>
- 在程式碼中定義過濾器
可以使用工廠方法透過採用模式來建立過濾器:
ObjectInputFilter.Config.createFilter(String);
也可實施自定義過濾器:
ObjectInputFilter與基於模式的過濾器相比,該介面還可以實現為過濾序列化資料提供更大的靈活性:
class Filter implements ObjectInputFilter { @Override public Status checkInput(FilterInfo filterInfo) { ... return null; } } |
程式碼中定義的過濾器可以在 JVM 級別設定,甚至可以在單個流級別設定。
要在 JVM 範圍內設定一個 fitler,setSerialFilter如下例所示:
ObjectInputFilter.Config.setSerialFilter(ObjectInputFilter);
要在單個流級別設定過濾器,請在要過濾setObjectInputFilter的流例項上使用:
ObjectInputStream.setObjectInputFilter(ObjectInputFilter);
相關文章
- JDK 17的外部儲存器訪問和Nio通道非同步化 – Inside.javaJDK非同步IDEJava
- 4、過濾器的使用及自定義過濾器過濾器
- Java設計模式-過濾器模式Java設計模式過濾器
- 過濾器過濾器
- Java Stream過濾器案例解說 - FoojayJava過濾器
- [Java反序列化]jdk原生鏈分析JavaJDK
- Spring Cloud Gateway中的過濾器工廠:重試過濾器SpringCloudGateway過濾器
- 誠翔濾器光刻膠過濾器濾芯:保障光刻過程的高效與安全過濾器
- Filter過濾器的使用Filter過濾器
- 點雲濾波器與過濾器過濾器
- java中listFiles(Filefilter filter)檔案過濾器的實現過程JavaFilter過濾器
- 13.gateway中的過濾器的介紹以及自定義過濾器Gateway過濾器
- CAN過濾器過濾器
- Filter過濾器Filter過濾器
- vue 過濾器Vue過濾器
- NetCore過濾器NetCore過濾器
- 代理過濾器過濾器
- Vue過濾器Vue過濾器
- DataV過濾器過濾器
- hbase過濾器過濾器
- Xor過濾器:比布隆Bloom過濾器更快,更小過濾器OOM
- Qt事件過濾器的使用QT事件過濾器
- Wireshark的捕獲過濾器過濾器
- Guava的布隆過濾器Guava過濾器
- 簡單的限流過濾器過濾器
- Spring Cloud Gateway ---GatewayFilter過濾器、過濾器工廠(入門)SpringCloudGatewayFilter過濾器
- PHP 過濾器(Filter)PHP過濾器Filter
- vue---過濾器Vue過濾器
- Vue中過濾器Vue過濾器
- vue filters過濾器VueFilter過濾器
- 布隆過濾器過濾器
- SpringSecurity過濾器原理SpringGse過濾器
- 很好奇Java的JDK是如何發展和構建的?Java平臺構建檢視網站:inside.javaJavaJDK網站IDE
- 監聽器和過濾器過濾器
- springBoot的過濾器,監聽器,攔截器Spring Boot過濾器
- Redis 中的布隆過濾器Redis過濾器
- 037:函式物件的過濾器函式物件過濾器
- .net core中的哪些過濾器過濾器