Уязвимость SSRF при вызове REST API

#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-адрес и вставить их как отдельные токены в свой метод, а затем объединить