Борьба с Veracode, помечающим переменную tableName как ошибку «SQL-инъекции»JAVA

Программисты JAVA общаются здесь
Anonymous
Борьба с Veracode, помечающим переменную tableName как ошибку «SQL-инъекции»

Сообщение Anonymous »

У нас есть служебная программа командной строки, которая загружает указанный файл (CSV) в указанную таблицу.
Очевидно, что имя таблицы будет предоставлено извне (по команде- строка), и 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

Вернуться в «JAVA»