Я вижу ошибку внедрения Cross Scripting в операторе, который следует за обновлением execute. Как санировать вывод, чтобы избавить его от ошибок кросс-скриптинга? У меня есть простой фрагмент кода, который использует PreparedStatement для запуска выбора и возвращает значения, которые извлекаются на экране GUI внешнего интерфейса.
Сообщение об ошибке XSS: "Испорченные данные возникли из более раннего вызова java. sql .ResultSetMetaData.getColumnName."
Java код:
Connection conn = null;
Statement stmt = null;
PreparedStatement pstmt = null;
try {
List alist= new ArrayList();
pstmt = conn.prepareStatement(sql);
ResultSet rs = pstmt.executeQuery();
int count = rs.getMetaData().getColumnCount();
for (int i = 1; i <= count; i++) {
alist.add(rs.getMetaData().getColumnName(i)) //Flaw seems to point to this.
}
}catch(Exception e){
//close connections
}
return alist;
Полная ошибка Veracode: Вектор атаки: javax.servlet. jsp .JspWriter.print
Количество Модули Затронутые: 1
Описание: Этот вызов javax.servlet. jsp .JspWriter.print () содержит ошибку межсайтового скриптинга (XSS). Приложение заполняет HTTP-ответ ненадежным вводом, позволяя злоумышленнику встроить вредоносный контент, такой как код Javascript, который будет выполняться в контексте браузера жертвы. Уязвимости XSS обычно используются для кражи или манипулирования файлами cookie, изменения представления контента и компрометации конфиденциальной информации, при этом новые векторы атак обнаруживаются на регулярной основе. Первый аргумент print () содержит испорченные данные из переменной get Html (). Загрязненные данные возникли из более раннего вызова java. sql .ResultSetMetaData.getColumnName. Испорченные данные направляются в выходной поток, возвращаемый javax.servlet. jsp .JspWriter.