Я выполняю сканирование veracode для моего Java кода, и он выдает следующую ошибку в одном из моих классов DAO
Неправильная нейтрализация специальных элементов, используемых в команде SQL ('SQL Injection ') CWE ID 89
Однако я попытался смягчить это с помощью библиотеки OW ASP .ESAPI, поскольку я не могу использовать параметризованный ввод для структурирования своего запроса, так как я использую String Builder. Ниже приведен пример кода, над которым я пытаюсь работать
private static String getPhoneDataSql(QuerySearchType type, PhoneQueryParams queryParams){
StringBuilder sql = new StringBuilder("select * from users where ");
List<String> sqls = new ArrayList<String>();
if(StringUtils.isNotBlank(queryParams.getUserId())){
sqls.add("USER_ID like ".concat(type.format(encodeSQLInput(queryParams.getUserId()))));
}
if(StringUtils.isNotBlank(queryParams.getUserName())){
sqls.add(UNAME_LIKE.concat(type.format(encodeSQLInput(queryParams.getUserName()))));
}
if(StringUtils.isNotBlank(queryParams.getCompany())){
sqls.add("STR_COMPANY like ".concat(type.format(encodeSQLInput(queryParams.getCompany()))));
}
boolean firstAnd = false;
for(String s : sqls){
sql.append(firstAnd ? STR_SQL_LIKE : "").append(s);
firstAnd = true;
}
return sql.toString();
}
private static String encodeSQLInput(String sqlInput){
Codec ORACLE_CODEC = new OracleCodec();
if(sqlInput == null) {
return "NULL";
}
sqlInput = ESAPI.encoder().encodeForSQL( ORACLE_CODEC, sqlInput);
return sqlInput;
}
Может кто-нибудь помочь?