在这里,我在该List<Data> dataList = jdbcTemplate.query
位置遇到错误。
Checkmarx 说:
AppServices/src/main/java/com/mbusa/app/dao/impl/AppRequestDAOImpl.java 从数据库中获取数据,用于查询元素。然后,该元素的值在未经适当过滤或编码的情况下流经代码,并最终在 AppWeb/src/main/java/com/mbusa/app/controllers/AppRequestController.java 的第 117 行的 getRequestDetail 方法中显示给用户。这可能会启用存储的跨站点脚本攻击。
List<Data> dataList = jdbcTemplate.query(new PreparedStatementCreator() {
@Override
public PreparedStatement createPreparedStatement(Connection conn) throws SQLException {
PreparedStatement pstmt = conn.prepareStatement(fSQL);
int index = 1;
for(Object param: effParams) {
pstmt.setString(index, (String) param);
index++;
}
return pstmt;
}
}, new RequestMapper());
public class RequestMapper implements RowMapper<Data> {
@Override
public Data mapRow(ResultSet rs, int rowNum) throws SQLException {
Data data = new Data();
data.setName(rs.getString("name"));
return data ;
}
}
我已PreparedStatement
在此处添加以解决此问题,并尝试添加HtmlUtil.htmlEscape
输出数据,但仍无法解决此问题。
任何人都可以帮助解决这个问题吗?