2

我有示例 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 开心吗?我知道编写一些代码只是让一些工具工作很沮丧。

4

0 回答 0