0

在这里,我在该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输出数据,但仍无法解决此问题。

任何人都可以帮助解决这个问题吗?

4

0 回答 0