Spring中的SimpleJdbcTemplate是否可以安全地从SQL注入?

McG*_*Gin 5 java sql spring sql-injection

我意识到可以将一个手动构造的String传递给execute(String)易受攻击的String .但是我对使用MapSqlParameterSource或其他一些公开方法(如下面的示例)中的参数传递参数感兴趣.深入研究来源,看起来它们正在使用每个中的预备语句,所以我认为注入是不可能的.但是我不是安全专家所以只是想确认一下.

例1:

getSimpleJdbcTemplate().queryForObject("SELECT * FROM table WHERE value = ?",
                new ObjectMapper(), code);
Run Code Online (Sandbox Code Playgroud)

例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));
Run Code Online (Sandbox Code Playgroud)

Boz*_*zho 7

是的,上面的代码是安全的注入 - 它使用参数绑定.