Java 有什么更好的方法来检查JdbcTemplate.batchUpdate中名称字段、名称表的SQL注入?

Java 有什么更好的方法来检查JdbcTemplate.batchUpdate中名称字段、名称表的SQL注入?,java,spring,jdbc,Java,Spring,Jdbc,在insert查询中,我使用SEQUENCE,因此我拒绝使用SimpleJdbcInsert…executeBatch(数据) String sql=“插入“+schema+”+tableName+”(id,“+fieldName1+”,“+fieldName2+”)值(BUF_SEQ.nextval,,?)”; List recordValues=new ArrayList(); //... 将记录的值添加到记录值列表 //运行用于插入的bash更新 batchUpdate(sql,Recor

在insert查询中,我使用SEQUENCE,因此我拒绝使用SimpleJdbcInsert…executeBatch(数据)

String sql=“插入“+schema+”+tableName+”(id,“+fieldName1+”,“+fieldName2+”)值(BUF_SEQ.nextval,,?)”;
List recordValues=new ArrayList();
//... 将记录的值添加到记录值列表
//运行用于插入的bash更新
batchUpdate(sql,RecordValue);
也许有人可以建议一种更好的使用Springframework jdbc的方法? 插入大量记录。 测试SQL注入中的字段名。 ?

1)不要在insert查询中调用序列,而是在insert表的id列上创建触发器。引用:
2) 现在使用spring的批更新进行批量插入,即jdbcTemplate.batchUpdate
现在,在insert查询中,您不再需要定义id,每次在表上进行插入时,都会触发触发器,id将递增。

3) 在insert查询中使用Prepared语句以避免sql注入。

您不能这样做。在生成语句时,必须指定表和列的名称。准备好的语句无法防止使用对象名称(表和列名等)进行SQL注入。唯一可靠的方法是使用白名单,或者对照
数据库元数据检查
String sql = "INSERT INTO "+ schema +"."+ tableName +" (id, " + fieldName1 + ", " + fieldName2 + ") VALUES (BUF_SEQ.nextval, ?, ?)";
List<Object[]> recordValues = new ArrayList<Object[]>();
//... add values of records to recordValues list

// run bash update for insert
jdbcTemplate.batchUpdate(sql, recordValues);