Spring(MVC)SQL注入避免?

Bog*_*lea 9 spring sql-injection jdbctemplate

我想知道Spring MVC如何处理SQL注入(以及其他安全问题:XSS,代码[javascript]注入等).我主要谈论的是逃避添加到DB等的值.我似乎无法找到任何答案,因为每次我搜索涉及依赖注入的spring sql注入结果时都会出现.

我的流程如下:从客户端浏览器我发出一个请求,包含一个带有一些查询参数的JSON(不是SQL语句,这太愚蠢了 - 在JS中形成SQL查询).当请求到达控制器中的正确注解的方法,该请求经由@RequestBody使用杰克逊到"请求对象"映射.现在这个对象被发送到DAO,在那里使用JDBC模板我查询db(并使用RowMapper我映射结果).

在DAO我有类似的东西:

public int countAll(RequestObject request) {
    String sql = "SELECT count(*) FROM employees WHERE name = '" + request.getName() + "'";

    JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
    int count = jdbcTemplate.queryForInt(sql);

    return count;
}
Run Code Online (Sandbox Code Playgroud)

现在这种方法可以安全地从SQL注入?基于非JDBCTemplate的查询是否安全,因为它们正在流经Spring MVC?

我们可以就此进行一些讨论吗?

Mic*_*l W 16

无论何时通过连接构建查询,您都可以对注入攻击进行攻击

正确传递参数:

jdbcTemplate.queryForInt(sql, args, argTypes)
Run Code Online (Sandbox Code Playgroud)

例如:

        JdbcTemplate insert = new JdbcTemplate(dataSource);
    insert.update("INSERT INTO PERSON (FIRSTNAME, LASTNAME) VALUES(?,?)",
            new Object[] { firstName, lastName });
Run Code Online (Sandbox Code Playgroud)

  • 然而你还没有实现它.春天不会逃避任何事情.根据您提供的信息,上述是您唯一的问题. (2认同)