Spring boot controller как санировать пользовательский ввод (запрос dto), чтобы пройти Checkmarx - PullRequest
0 голосов
/ 07 октября 2019

У меня есть пример кода контроллера загрузки Spring, как показано ниже:

@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, контрольная метка по-прежнему жалуется:

потоковчерез код без надлежащей очистки или проверки и в конечном итоге отображается для пользователя в методе doSomething

Я не знаю, какой смысл или как санировать поле типа java LocalDate, а также дляТребование XSS: нет необходимости очищать поле, отличное от строки.

Кто-нибудь знает, как написать код, чтобы сделать checkmarx счастливым? Я знаю, что это расстроено из-за того, что я написал какой-то код, просто позволяющий работать некоторому инструменту.

...