FindBugs не поиск потенциальных уязвимостей SQL инъекции

я только что установил FindBugs плагин для Eclipse, с надеждой, что она поможет мне найти SQL-инъекций в моем коде. Однако, это, кажется, не найдя ничего, даже когда я намеренно налить.

В следующих примерах предполагается, что staticFinalBaseQuery объявляется следующим образом:

public static final Строка staticFinalBaseQuery = "SELECT foo FROM table where id="";

и предположить userInputfilterString это аргумент метода обертывание примере фрагменты кода. Он приходит непосредственно из данных, вводимых пользователем, и не санирован.

например, следующий фрагмент не вызовет предупреждение:

String query = staticFinalBaseQuery + userInputfilterString;
pstmt = dbConnection.prepareStatement(query);

Где staticFinalBaseQuery - static final string, и userInputfilterString - строка непосредственно из пользовательского ввода, доступных только во время выполнения, не натирают. Понятно, что это уязвимость.

я ожидаю, что "подготовленный отчет генерируется из непостоянное Строке" предупреждение сработает.

следующий фрагмент также не вызывает предупреждение (не удивительно, так как в скомпилированных форм возможно, идентичны):

pstmt = dbConnection.prepareStatement(staticFinalBaseQuery + userInputfilterString);

Однако, это вызовет предупреждение:

pstmt = dbConnection.prepareStatement(staticFinalBaseQuery + userInputfilterString + "'");

Если я добавить пустую строку, или пространство, предупреждение не сработало.

Итак, мой вопрос : как я могу получить FindBugs, чтобы вызвать на моем первом примере? А также мне интересно, почему первое не вызывает предупреждение, но последний ли?

заранее Спасибо!

" ИЗМЕНИТЬ".: я представил ошибка FindBugs система отслеживания ошибок, как кажется, это может быть ошибкой. Однако, если у кого есть какие советы, я хотел бы их услышать.

Найдено 3 ответа:

Findbugs not finding potential SQL injection vulnerability

http://stackoverflow.com/questions/398179/findbugs-not-finding-potential-sql-injection-vulnerability

Посмотреть решение →