Mah*_*nan 4 java spring sql-injection spring-jdbc jdbctemplate
SQL注入中哪一个是安全的:NamedParameterJdbcTemplate或SimpleJdbcTemplate?
例如,
String sql = "insert into db_table (associateid,comment) values(:associateId,:comments)";
Map<String, Object> paramMap = new HashMap<String, Object>();
paramMap.put("associateId", "12345");
paramMap.put("comments", "some comments");
int rowNumber = readTemplate.update(sql, paramMap);
Run Code Online (Sandbox Code Playgroud)
要么
String sql = "insert into db_table (associateid,comment) values(?,?)";
int rowNumber = readTemplate.update(sql,new Object[] {"comments","some comments"} );
Run Code Online (Sandbox Code Playgroud)
第一个使用NamedParameterJdbcTemplate,而第二个使用SimpleJdbcTemplate。在某些站点中,两者给出的名称相同,在另一些站点中,NamedParameterJdbcTemplate是安全的。谁能消除我的疑虑?
两者都使用Preparedstatement
s执行查询。这些是防止sql注入的措施。因此,在SQL注入方面没有区别。
但是,如果您查看SimpleJdbcTemplate的文档:
不推荐使用。
从Spring 3.1
开始支持JdbcTemplate和NamedParameterJdbcTemplate。现在,JdbcTemplate和NamedParameterJdbcTemplate提供了SimpleJdbcTemplate的所有功能。
因此,您应该使用NamedParameterJdbcTemplate,因为它不会被取消使用。(但是,旧版代码可能仍会使用它)
归档时间: |
|
查看次数: |
4014 次 |
最近记录: |