#java #spring-boot #jpa #sql-injection #checkmarx
Вопрос:
я запускаю Checkmarx в своем коде и получаю уязвимость для инъекции sql. это упрощенный метод, который я использую
public String assignRole(String userId, String roleId) { Optionallt;RoleEntitygt; roleEntity = roleRepository.findById(roleId) if (roleEntity.isPresent()) { UserEntity user = UserEntity.builder().userId(userId).role(roleEntity.get()).build(); userRepository.save(user); return "SUCCESS"; } else { throw new ServiceException("ERROR"); }}
и анализ checkmax говорит:
Метод assignRole приложения выполняет SQL-запрос с сохранением в строке xx src/Service.java. Приложение создает этот SQL-запрос путем встраивания в запрос ненадежной строки без надлежащей очистки. Объединенная строка отправляется в базу данных, где она анализируется и выполняется соответствующим образом. Злоумышленник сможет ввести произвольный синтаксис и данные в SQL-запрос, создав вредоносную полезную нагрузку и предоставив ее через входной идентификатор роли; Это может привести к атаке SQL-инъекции.
я немного сбит с толку, потому что я не создаю собственный запрос или не объединяю строки в запросе, или, может быть, я что-то упускаю.
есть какие-нибудь идеи, как это исправить? или, может быть, это ложноположительный результат.
Комментарии:
1. Это ложноположительный результат.