У меня есть контроллер сервиса RESTful, который запрашивает другой сервис RESTful
@ResponseBody
@RequestMapping(value = "/headerparameters/{instanceId}", method = RequestMethod.DELETE)
public RestContainerFormBean passivizeHeaderParameter(@PathVariable String instanceId) throws GenericException, IOException {
String url = proactiveURL + "/customerheaders/" + instanceId;
if(isSecurityCheckOK(url)){
ResponseEntity<CustomerHeaderParameterBean> response = restTemplate.exchange(url, HttpMethod.DELETE, new HttpEntity<>(new HttpHeaders()), CustomerHeaderParameterBean.class);
CustomerHeaderParameterBean result = response.getBody();
setButtonActivity(result);
l10nOfValue(result);
return new RestContainerFormBean(result);
} else{
throw new IOException();
}
}
Этот код не может пройти политику SonarQube.
Рефакторинг этого кода, чтобы не создавать URL из испорченного ,
Данные, предоставленные пользователем, такие как параметры URL, полезные данные POST или файлы cookie, всегда должны рассматриваться как ненадежные и испорченные. Удаленный сервер, выполняющий запросы к URL-адресам на основе испорченных данных, может позволить злоумышленникам отправлять произвольные запросы во внутреннюю сеть или локальную файловую систему.
Проблема может быть устранена любым из следующих способов:
Проверка предоставленных пользователем данных на основе белого списка и отклонение ввода, не соответствующего. Перепроектируйте приложение, чтобы оно не отправляло запросы на основе предоставленных пользователем данных.
Как я могу пройти политику, придерживаясь соглашений REST?