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);
相關文章
- Java Filter過濾器JavaFilter過濾器
- Java 中的 Filter 過濾器詳解JavaFilter過濾器
- 4、過濾器的使用及自定義過濾器過濾器
- 過濾Servlet--過濾器Servlet過濾器
- Java設計模式-過濾器模式Java設計模式過濾器
- java--FilenameFilter檔案過濾器JavaFilter過濾器
- 過濾器過濾器
- 布隆過濾器(Bloom Filter)的java實現過濾器OOMFilterJava
- Java Stream過濾器案例解說 - FoojayJava過濾器
- java過濾器中如何轉移地址?Java過濾器
- 誠翔濾器光刻膠過濾器濾芯:保障光刻過程的高效與安全過濾器
- [Java反序列化]jdk原生鏈分析JavaJDK
- java 過濾 htmlJavaHTML
- 點雲濾波器與過濾器過濾器
- Filter過濾器的使用Filter過濾器
- java web 過濾器跟攔截器的區別和使用JavaWeb過濾器
- JDK 17的外部儲存器訪問和Nio通道非同步化 – Inside.javaJDK非同步IDEJava
- 代理過濾器過濾器
- vue 過濾器Vue過濾器
- Filter過濾器Filter過濾器
- hbase過濾器過濾器
- CAN過濾器過濾器
- Servlet過濾器Servlet過濾器
- 26、過濾器過濾器
- jms過濾器過濾器
- DataV過濾器過濾器
- Vue過濾器Vue過濾器
- 【Java基礎】--filter過濾器原理解析JavaFilter過濾器
- 13.gateway中的過濾器的介紹以及自定義過濾器Gateway過濾器
- Spring Cloud Gateway中的過濾器工廠:重試過濾器SpringCloudGateway過濾器
- java中listFiles(Filefilter filter)檔案過濾器的實現過程JavaFilter過濾器
- Xor過濾器:比布隆Bloom過濾器更快,更小過濾器OOM
- Java敏感詞過濾Java
- 【過濾器】web中過濾器的使用與亂碼問題解決過濾器Web
- asp.net core MVC 過濾器之ActionFilter過濾器(二)ASP.NETMVC過濾器Filter
- Guava的布隆過濾器Guava過濾器
- Qt事件過濾器的使用QT事件過濾器
- 布隆過濾器的概述過濾器