В нашем Java-проекте мне нужно найти потенциальные SQL-инъекции в исходных файлах java.
Мы используем наш собственный интерфейсный интерфейс Java-SQL, и все соответствующие SQL-запросы имеют следующую форму:
String someText = "potential SQL injection";
SQL.selectInto(
"SELECT C.LANGUAGE, " +
someText +
"FROM COMPANY C " +
"WHERE C.COMPANY_NR = :companyNr " +
"INTO :languageUid ",
new NVPair("companyNr", companyNr),
new NVPair("languageUid", languageUid)
);
Проблема в том, что переменная "someText" потенциально может содержать другую строку SQL, которая может вызвать SQL-инъекцию.
Я ищу способ (регулярное выражение, Javaсинтаксический анализатор и т. д.), чтобы найти все строковые литералы java с SQL в нем, которые имеют некоторую конкатенацию строк, которая может содержать фрагмент SQL, так что я мог бы проверить эти экземпляры вручную и переписать их при необходимости.
Я предполагаю, что SQL-stmts используются только с классом-помощником SQL, например:
SQL.select(...)
SQL.insert(...)