2010-10-24 77 views
4

我意識到可以將手動構建的字符串傳遞給易受攻擊的execute(String)。不過,我對使用MapSqlParameterSource或其他公開方法之一(如下面的示例)將參數傳遞給查詢感興趣。挖掘它的源代碼看起來好像它在每一箇中都使用了準備好的語句,所以我認爲注入是不可能的。然而,我不是安全專家,所以只是想確認一下。Spring中的SimpleJdbcTemplate是否可以避免SQL注入?

實施例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)); 

回答

7

是,上面的代碼是從注射安全的 - 它使用參數綁定。

相關問題