You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring如何防范请求体反序列化攻击与JSON注入?

Spring 防范JSON反序列化攻击的机制

Spring结合Jackson等序列化库,通过多层防护抵御恶意类实例化及命令执行类的反序列化攻击,具体机制如下:

1. Jackson默认安全限制

Jackson从2.9版本起,默认禁用了java.lang.Runtime、java.lang.ProcessBuilder等危险类的反序列化,攻击者尝试在JSON中指定这类恶意类时,会直接触发异常,无法完成实例化。

同时,Jackson默认关闭了enableDefaultTyping(高版本已标记为不安全),不会通过@class这类字段允许任意类的实例化——只有明确绑定的目标类才能被解析,从根源上切断攻击者指定恶意类的路径。

2. Spring MVC请求绑定的严格性

Spring MVC处理@RequestBody时,只会将JSON数据绑定到你预先声明的业务DTO/实体类上。比如接口接收的是UserDTO,即便JSON里包含恶意类字段,Spring也只会解析UserDTO定义的属性,忽略无关内容,不会去实例化未声明的类。

3. 可自定义的安全增强配置

  • 针对Jackson的ObjectMapper,可以用setAllowedClasses指定仅允许反序列化的类列表,或通过addMixIn限制类的属性访问范围;
  • Spring Boot项目可开启spring.jackson.deserialization.fail-on-unknown-properties=true配置,一旦JSON出现业务类未定义的属性,直接抛出异常阻断处理;
  • 始终使用Jackson最新稳定版,每个版本都会修复已知的反序列化漏洞。

关于你的推测

你的判断是对的,Jackson作为Spring生态默认的JSON序列化库,在反序列化安全上做了大量优化,但安全防护是多层叠加的,除了依赖类库,还要结合Spring本身的请求绑定规则,才能最大化降低风险。

内容的提问来源于stack exchange,提问作者Huseyin Aydin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 15:00:49