mirror of
https://gitee.com/dromara/hutool.git
synced 2025-04-05 17:37:59 +08:00
SerializeUtil.deserialize增加白名单类,避免RCE vulnerability
This commit is contained in:
parent
636f238dbe
commit
73cf56f3a2
@ -2,9 +2,10 @@
|
||||
# 🚀Changelog
|
||||
|
||||
-------------------------------------------------------------------------------------------------------------
|
||||
# 5.8.17.M1 (2023-03-26)
|
||||
# 5.8.17.M1 (2023-03-28)
|
||||
|
||||
### 🐣新特性
|
||||
* 【core 】 SerializeUtil.deserialize增加白名单类,避免RCE vulnerability(issue#3021@Github)
|
||||
|
||||
### 🐞Bug修复
|
||||
|
||||
|
@ -588,10 +588,11 @@ public class ObjectUtil {
|
||||
*
|
||||
* @param <T> 对象类型
|
||||
* @param bytes 反序列化的字节码
|
||||
* @param acceptClasses 白名单的类
|
||||
* @return 反序列化后的对象
|
||||
*/
|
||||
public static <T> T deserialize(byte[] bytes) {
|
||||
return SerializeUtil.deserialize(bytes);
|
||||
public static <T> T deserialize(byte[] bytes, Class<?>... acceptClasses) {
|
||||
return SerializeUtil.deserialize(bytes, acceptClasses);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -2,9 +2,12 @@ package cn.hutool.core.util;
|
||||
|
||||
import cn.hutool.core.exceptions.UtilException;
|
||||
import cn.hutool.core.io.FastByteArrayOutputStream;
|
||||
import cn.hutool.core.io.IORuntimeException;
|
||||
import cn.hutool.core.io.IoUtil;
|
||||
import cn.hutool.core.io.ValidateObjectInputStream;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
@ -59,9 +62,15 @@ public class SerializeUtil {
|
||||
*
|
||||
* @param <T> 对象类型
|
||||
* @param bytes 反序列化的字节码
|
||||
* @param acceptClasses 白名单的类
|
||||
* @return 反序列化后的对象
|
||||
*/
|
||||
public static <T> T deserialize(byte[] bytes) {
|
||||
return IoUtil.readObj(new ByteArrayInputStream(bytes));
|
||||
public static <T> T deserialize(byte[] bytes, Class<?>... acceptClasses) {
|
||||
try {
|
||||
return IoUtil.readObj(new ValidateObjectInputStream(
|
||||
new ByteArrayInputStream(bytes), acceptClasses));
|
||||
} catch (IOException e) {
|
||||
throw new IORuntimeException(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user