我有示例 Spring Boot 控制器代码,如下所示:
@Slf4j
@RestController
public class PersonController {
private final PersonService PersonService;
public PersonController(PersonService PersonService) {
this.PersonService = PersonService;
}
@PostMapping(value = "/v1/Person", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
public PersonResponseDto Person(@Valid @RequestBody PersonRequestDto PersonRequestDto,
@RequestHeader(value = "x-correlation-id", required = false) String correlationId) {
String something = HtmlUtils.htmlEscape(PersonRequestDto.getSomething());
PersonRequestDto newRequestDto = PersonRequestDto.builder()
.something(something)
.date(PersonRequestDto.getDate())
.build();
return PersonService.save(newRequestDto);
}
}
public class PersonRequestDto {
@NotBlank
private String something;
private LocalDate date;
}
即使我对字符串字段进行了清理something
,checkmarx 仍然抱怨:
在没有经过适当清理或验证的情况下流过代码,并最终在方法 doSomething 中显示给用户
我不知道有什么意义或如何清理 javaLocalDate
类型字段,而且对于 XSS 要求,除了字符串之外不需要清理字段。
任何人都知道如何编写代码来让 checkmarx 开心吗?我知道编写一些代码只是让一些工具工作很沮丧。