Spring中的SimpleJdbcTemplate是否安全免受SQL注入攻击?

5
我知道可以手动构建一个字符串来传递给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));
1个回答

7

是的,上面的代码是安全的,可以防止注入攻击 - 它使用参数绑定。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接