【发布时间】:2019-04-04 18:56:27
【问题描述】:
我有一个类被用于 SQL 注入的 veracode 扫描标记,即使我使用的是 PreparedStatment。我无法确定问题出在哪里,或者这是否可能是扫描中的误报。请参考以下代码(QueryBuffer是一个使用StringBuffer的自定义类):
List<ReferralService> list = new ArrayList<ReferralService>();
QueryBuffer sql = new QueryBuffer();
sql.addSql("SELECT rs.id FROM referral_service rs ");
sql.addSql("WHERE ");
sql.addSql("rs.closed = ? AND ");
sql.addSql("rs.workflow_id = ? ");
sql.addSql("ORDER BY submitted_on ASC limit 200");
PreparedStatement prepStmt = conn.prepareStatement(sql.toString());
prepStmt.setInt(1, 0);
prepStmt.setInt(2, liTeamID);
ResultSet rs = prepStmt.executeQuery();
【问题讨论】:
-
看起来像是误报。您可能可以通过不使用该 QueryBuffer 来摆脱它,而是直接从单个字符串文字中准备语句。
-
你为什么还要使用
QueryBuffer?在显示的代码中,它只是增加了不必要的开销。