如何使用预准备语句修复SQL注入?

问题描述 投票:0回答:1

即使我正在使用PreparedStatment,我也有一个被注入SQL注入的veracode扫描标记的类。我无法确定问题所在,或者扫描是否可能出现误报。请参考下面的代码(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();
java prepared-statement
1个回答
1
投票

看起来veracode对字符串连接不满意。

当(另一个)开发人员将扩展代码并向字符串添加不好的东西(如变量)时,它可能会在将来发生。

所以请避免使用所有这些addSql字符串。

© www.soinside.com 2019 - 2024. All rights reserved.