#java #spring #rest #veracode
#java #весна #rest #veracode
Вопрос:
Я использую метод, в котором он вызывает другой REST API для извлечения идентификатора из базы данных. Когда я запускаю проверку veracode для класса, я получаю ошибку безопасности «Подделка запроса на стороне сервера» в строке ниже.
response = resttemplate.getForEntity(resturl, String.class);
Не уверен, как исправить эту проблему. Любая помощь приветствуется. Ниже приведен мой полный код для этого метода.
public static String getIDFromDB(String resturl) {
String id = null;
RestTemplate resttemplate = new RestTemplate();
ResponseEntity<String> response = new ResponseEntity<>(HTTPStatus.OK)
try {
response = resttemplate.getForEntity(resturl, String.class);
if (response.getStatusCode == HTTPStatus.OK amp;amp; response.getBody.trim() != null) {
id = response.getBody.trim() ;
}
} Catch(Exception e) {
log.error("failed to get msgID: {}", e);
}
}
Ответ №1:
Это связано с тем, что вы разрешаете в своем коде полностью передавать resturl в своем коде, что позволяет злоумышленнику обойти и перенаправить URL-адрес по назначению.
Чтобы избежать этого, so следует экстернализировать и ссылаться на URL-адрес, содержащий домен и контексты приложения, с именем операции в файлах конфигурации или БД
Комментарии:
1. спасибо за ваш ответ. В этом проекте у нас не может быть свойств или каких-либо файлов конфигурации. Более того, у нас разные URL-адреса для разных сред. Есть ли какой-либо способ очистить URL-адрес?
2. Попробуйте разбить URL-адрес и вставить их как отдельные токены в свой метод, а затем объединить