嗨,我有一个带有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 =“ 属性。 任何帮助表示赞赏。