如何在 Spring Boot 中明确检查请求内容类型是否与实际内容匹配?

问题描述

我想验证我的请求内容类型是否与我的请求正文匹配? 我正在尝试实施 Owasp Rest 安全标准。

其中说:

Json Mismatch

13.2.5 验证 REST 服务是否明确检查传入的 Content-Type 是否为预期的内容类型,例如 application/XML 或 application/JSON。

在下图中,内容类型是 JSON,但请求是 XML。仍然可以正常工作。

我的控制器代码:-

@RestController
public class TestController {

@PostMapping(path="/hello",consumes = "application/json")
public Map<String,String> hello(Master ecm){
    Map<String,String> m=new HashMap<>() ;
    m.put("message","hello!");
    return m;
   }

}

解决方法

Spring 注释为此提供了一个特定的属性。它被称为消费。

这是一个例子

@PostMapping(consumes = MediaType.SELECT_TYPE_HERE)

具体例子

@PostMapping(consumes = MediaType.APPLICATION_JSON_VALUE)