我知道可以手动构建一个字符串来传递给
execute(String)
,这种方法存在漏洞。但是我更感兴趣的是你在哪里使用MapSqlParameterSource或其他暴露的方法来传递查询参数,比如下面的示例。通过查看源代码,每个示例似乎都使用了预编译语句,因此我认为注入是不可能的。然而,我不是安全专家,所以想确认一下。
示例1:
getSimpleJdbcTemplate().queryForObject("SELECT * FROM table WHERE value = ?",
new ObjectMapper(), code);
示例2:
getSimpleJdbcTemplate()
.update(
"insert into table "
+ "(column1, column2, column3, column4, column5) VALUES "
+ "(:column1, :column2, :column3, :column4, :column5)",
new MapSqlParameterSource().addValue("column1",
value1).addValue("column2",
value2).addValue("column3",
value3).addValue("column4",
value4).addValue("column5", value5));