Исправление SQL-инъекций в существующем проекте - PullRequest
2 голосов
/ 22 марта 2019

Это мой первый вопрос на этом форуме, Мы поддерживаем приложения Spring & Hibernate Framework, недавно сканирование произошло в существующем коде (более 6 лет кода) как часть процесса безопасности. Выявленная уязвимость SQL-инъекций в этих приложениях около 5. Это случается во многих местах, как показано ниже

StringBuffer sb = new StringBuffer();
FormBean searchcriteria= new FormBean();

sb.append(" SELECT * FROM VW_VIEW1 WHERE COLUMN1 IN (")
.append(" SELECT ID FROM VW_VIEW2 WHERE (")
.append(" COLUMN1 =:NAME OR COLUMN2 IN (SELECT COLUMN2 FROM TABLE WHERE COLUMN3 = :NAME ) AND COLUMN2 IS NOT NULL)))");

if (searchcriteria !=null)
{
 **fillCriteria (criteria,sb);**
}

sb.append(" order by ").append(csort).append(" ").append(csorty);
Query query=session.createSQLQuery(sb.toString()).setParameter("NAME" "MYNAME");
return query.list();

Здесь проблема fillCriteria имеет много столбцов условия where, основанных на выборе пользователя. Этот пример кода работы показан ниже

 private void fillCriteria(FORMBEAN criteria,StringBuffer sb)

{
Helper.addCriterionClause(sb, " and lower(Table_ID) like ",criteria.ID);
Helper.addCriterionClause(sb, " and lower(Table_ID1) like ",criteria.ID1);
Helper.addCriterionClause(sb, " and lower(Table_ID2) like ",criteria.ID2);
Helper.addCriterionClause(sb, " and lower(Table_ID3) like ",criteria.ID3);
Helper.addCriterionClause(sb, " and lower(Table_ID4) like ",criteria.ID4);
Helper.addCriterionClause(sb, " and lower(Table_ID5) like ",criteria.ID5);
Helper.addCriterionClause(sb, " and lower(Table_ID6) like ",criteria.ID6);
Helper.addCriterionClause(sb, " and lower(Table_ID7) like ",criteria.ID7);
}

как эти 20-30 пунктов там. Это один метод в классе, у меня есть десятки методов в каждом классе, десятки классов в каждом приложении. Я не хочу переопределять все эти методы сейчас, так как у меня нет времени и ресурсов.

Не могли бы вы порекомендовать разобраться с этими типами проблем, чтобы исправить внедрение SQL в одном месте вместо изменения всего кода. с минимальным изменением кода, как я могу справиться с этим

Ваш ответ очень ценится

...