Очевидно, что имя таблицы будет предоставлено извне (по команде- строка), и Veracode помечает это как возможную уязвимость SQL-инъекции. Например, эта строка помечена:
Код: Выделить всё
private static String startingCntQry =
"select count(*) as COUNTER from @TABLENAME";
...
ResultSet rs = stmt.executeQuery(startingCntQry.replace("@TABLENAME",
tableName));
Имена таблиц не могут быть параметрами для ReadedStatement. Есть предложения, что имя таблицы должно быть проверено по списку существующих таблиц, но наша утилита, в зависимости от других флагов командной строки, может создавать указанную таблицу заново -- его не будет в списке уже существующих.
Да, мы можем проверить указанное имя по некоторому регулярному выражению, но удовлетворит ли это Veracode?
Подробнее здесь: https://stackoverflow.com/questions/790 ... ction-flaw