Мы получаем «CWE-89: неправильная нейтрализация специальных элементов, используемых в команде SQL (« SQL-инъекция »)» в коде Java:
private static void doSomethingWithDB(int queryFetchSize, String sql, Object... params)
try {
Connection connection = ...
PreparedStatement statement = connection.prepareStatement(sql);
statement.setFetchSize(queryFetchSize);
for (int i = 0; i < params.length; i++) {
statement.setObject(i + 1, params[i]);
}
ResultSet resultSet = statement.executeQuery(); //this is where Veracode reports error
....
передача SQL извне - не лучшийпрактика проектирования, но в данном случае это нормально (метод частный, запросы SQL находятся под нашим контролем).
Как сделать Veracode менее параноидальным в этом случае?