使用@GetMapping、@PostMapping时关键资源的权限分配不正确

问题描述 投票:0回答:1

我们正在使用 Spring Boot 应用程序来开发 API 项目。而且它也有招摇的感觉。 我们使用 Checkmarx 来识别项目中的漏洞。 在资源方法中我们使用@GetMapping。 使用 @GetMapping 和 @PostMapping 会导致“关键资源的权限分配不正确”

@RestController
@RequestMapping("/test")
@Tag(name = "User Details")
public class UserDataController {

    private static final Logger LOGGER = ESAPI.getLogger(UserDataController.class);
@Operation(summary = "Get Details", tags = { "User Details" })
@GetMapping(path = "/v1.3/userData")
public ResponseEntity<UserDataResponseV3> getUserDataV3(
        @RequestParam(value = "changeFromDate", required = false) @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:Ss.SSS") LocalDate changeFromDate,
        @RequestParam(value = "changeToDate", required = false) @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:Ss.SSS") LocalDate changeToDate) {
    LOGGER.info(Logger.EVENT_SUCCESS,
            "Request processing for UserDataController.getUserDataV3() execution Started");

    LOGGER.debug(Logger.EVENT_SUCCESS, "userData Criteria-> from " + changeFromDate + " to {}" + changeToDate);

    
    LOGGER.info(Logger.EVENT_SUCCESS,
            "Request processing for UserDataController.getUserDataV3() execution Ended");

    return new ResponseEntity<>(userData, HttpStatus.OK);
}
}

在 Checkmarx 报告中,以下是列出的漏洞。

通过路径在文件系统上创建文件 src/main/java/com/test/codes/controller/UserDataController.java 位于 第 202 行具有潜在危险的权限。

java spring-boot spring-mvc checkmarx
1个回答
0
投票

我通过谷歌发现了这个问题,因为我目前面临着完全相同的问题。

我分析了我们这边的问题,并注意到 Checkmarx 似乎将其标记为一个发现,因为注释中存在

path
参数。

只需删除

path
参数,或用
path
替换
value
参数(它们是彼此的别名)即可解决问题。

结果:

@GetMapping(path = "/v1.3/userData")

没有发现任何结果:

@GetMapping("/v1.3/userData")
@GetMapping(value = "/v1.3/userData")

希望这可以帮助将来面临同样问题并偶然发现这个问题的其他人。

© www.soinside.com 2019 - 2024. All rights reserved.