Я понимаю, что можно передать вручную созданную строку в 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));