在Spring Boot中以多部分形式发布文件时,如何忽略type属性?

时间:2019-05-22 16:05:52

标签: spring spring-boot spring-rest

嗨,我有一个带有rest控制器的spring boot应用程序。我可以将文件发布到控制器中的资源方法。

@PostMapping("/files")
@Timed
public ResponseEntity<FileDTO> createFile(MultipartFile file, HttpServletRequest request) throws URISyntaxException {
    log.debug("REST request to save File");
    if (file.isEmpty()) {
        return new ResponseEntity("Please select a file!", HttpStatus.BAD_REQUEST);
    }
    UUID id = fileService.save(file, null);
    if (id != null) {
        return ResponseEntity.created(new URI("/api/files/" + id))
            .headers(HeaderUtil.createEntityCreationAlert(ENTITY_NAME, id.toString()))
            .body(new FileDTO(id, request.getRequestURL() + "/" + id));
    } else {
        return ResponseEntity.status(HttpStatus.BAD_REQUEST).build();
    }
}

这是我向控制器发送的curl请求,它正在成功接收文件。

curl -v  -X POST "http://localhost:8080/api/files" -H "Authorization: Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJnbG9iYWxhZG1pbkBsb2NhbGhvc3QiLCJhdXRoIjoiUk9MRV9HTE9CQUxfURNSU4iLCJleHAiOjE1NTg2MjQ2NjF9.XV8Ibcqoh7a6FWN6BF89rH4abyraaS86jsP04Y5vuNrH-rnJ3Se0T7ogA0t7oXXzrVsvZUpPgkm5pGHotd6a_g" -H "accept: */*" -H "Content-Type: multipart/form-data1" -F "file=@virus.exe;type=image/jpeg"

问题是我能够发布一个type = image / jpeg的exe文件。这有助于攻击者绕过我的应用程序中的某些内容类型检查。 我如何配置我的弹簧控制器以忽略“ type =“ 属性。 任何帮助表示赞赏。

0 个答案:

没有答案