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

如何防止Spring请求体键重复以提升应用安全性?

处理Spring Boot中JSON请求体重复键的问题

当请求体存在重复JSON键时,Spring Boot默认使用的Jackson解析器会保留最后一个键的值,这和你在Postman里看到的行为一致。要阻止这种情况,你可以通过配置Jackson让它遇到重复键时直接抛出异常,具体方案如下:

  • 开启Jackson的重复键校验特性
    Spring Boot允许你自定义ObjectMapper实例,开启FAIL_ON_DUPLICATE_PROPERTIES特性。这样当请求体中出现重复属性时,Jackson会抛出JsonMappingException,Spring MVC会自动返回400 Bad Request响应,拒绝该请求。

    配置代码示例:

    @Configuration
    public class JacksonConfig {
        @Bean
        public ObjectMapper objectMapper() {
            ObjectMapper mapper = new ObjectMapper();
            // 开启重复键校验,遇到重复属性直接抛出异常
            mapper.enable(DeserializationFeature.FAIL_ON_DUPLICATE_PROPERTIES);
            return mapper;
        }
    }
    
  • 验证效果
    当请求体包含重复键时,接口会返回类似如下的错误响应:

    {
        "timestamp": "2024-05-20T12:34:56.789+00:00",
        "status": 400,
        "error": "Bad Request",
        "message": "Duplicate field 'firstName'",
        "path": "/your-api-endpoint"
    }
    

需要注意的是,Spring Boot并没有默认开启这个校验,因为JSON官方规范并未明确禁止重复键,不同解析器的处理行为可能存在差异。通过上述配置,你可以强化接口的安全性,避免因重复键导致的意外数据覆盖。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 04:18:29