From 240a5813112fa4c8b23c195b56d422ccabc57502 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A7=8B=E8=BE=9E=E6=9C=AA=E5=AF=92?= <545073804@qq.com> Date: Fri, 30 Jan 2026 00:33:50 +0800 Subject: [PATCH] =?UTF-8?q?update=20=E6=9B=B4=E6=96=B0=20RedisConfig=20?= =?UTF-8?q?=E7=9A=84=20Jackson=20=E5=8F=8D=E5=BA=8F=E5=88=97=E5=8C=96?= =?UTF-8?q?=E5=AE=89=E5=85=A8=E9=AA=8C=E8=AF=81=E7=AD=96=E7=95=A5=E4=B8=8E?= =?UTF-8?q?=E6=97=A7=E7=89=88=E6=9C=AC=E4=BF=9D=E6=8C=81=E4=B8=80=E8=87=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/dromara/common/redis/config/RedisConfig.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/ruoyi-common/ruoyi-common-redis/src/main/java/org/dromara/common/redis/config/RedisConfig.java b/ruoyi-common/ruoyi-common-redis/src/main/java/org/dromara/common/redis/config/RedisConfig.java index 8fd2f31df..d150bdc00 100644 --- a/ruoyi-common/ruoyi-common-redis/src/main/java/org/dromara/common/redis/config/RedisConfig.java +++ b/ruoyi-common/ruoyi-common-redis/src/main/java/org/dromara/common/redis/config/RedisConfig.java @@ -21,7 +21,7 @@ import tools.jackson.databind.DefaultTyping; import tools.jackson.databind.ext.javatime.deser.LocalDateTimeDeserializer; import tools.jackson.databind.ext.javatime.ser.LocalDateTimeSerializer; import tools.jackson.databind.json.JsonMapper; -import tools.jackson.databind.jsontype.DefaultBaseTypeLimitingValidator; +import tools.jackson.databind.jsontype.BasicPolymorphicTypeValidator; import tools.jackson.databind.module.SimpleModule; import java.time.LocalDateTime; @@ -53,8 +53,10 @@ public class RedisConfig { .defaultTimeZone(TimeZone.getDefault()) .changeDefaultVisibility(visibilityChecker -> visibilityChecker.withVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY)) // 指定序列化输入的类型,类必须是非final修饰的。序列化时将对象全类名一起保存下来 - // LaissezFaireSubTypeValidator 在 Jackson 3.X 中被禁止外部引用,此处使用 DefaultBaseTypeLimitingValidator 替代,两者在行为上可能会有所差异,但一般情况下无影响 - .activateDefaultTyping(new DefaultBaseTypeLimitingValidator(), DefaultTyping.NON_FINAL) + // 因为安全策略,LaissezFaireSubTypeValidator 在 Jackson 3.X 中被禁止外部引用,在反序列化的数据来源不可信时,需要配置反序列化验证器来防止反序列化漏洞攻击,使用者需要自行执行哪些包或类是可以放行的 + // 此处使用 BasicPolymorphicTypeValidator + 自定义类型匹配起替代,默认放行所有类型,此行为配置与 Jackson 2.X 中 LaissezFaireSubTypeValidator 的行为基本一致 + // 一般而言,更加建议使用包名白名单的方式去进行匹配,以确保放行通过安全认可的类,如:BasicPolymorphicTypeValidator.builder().allowIfBaseType("org.dromara").allowIfSubType("org.dromara").build() + .activateDefaultTyping(BasicPolymorphicTypeValidator.builder().allowIfSubType((ctxt, clazz) -> true).build(), DefaultTyping.NON_FINAL) .build(); // org.apache.fory.logging.LoggerFactory 包别引入错了 // LoggerFactory.useSlf4jLogging(true);