spring - Spring JDBC 是否提供任何针对 SQL 注入(inject)攻击的保护?

标签 spring sql-injection jdbctemplate

Spring 的JdbcTemplate抽象提供了很多功能,但它可以用于提供对 SQL 注入(inject)攻击的保护吗?

例如,您可以使用 PreparedStatement 获得的保护。具有正确定义的参数化。

最佳答案

确实如此。此示例直接来自 Spring 3.0 文档(但在 2.* 中相同):

String lastName = this.jdbcTemplate.queryForObject( 
        "select last_name from t_actor where id = ?", 
        String.class, 1212L); 

如您所见,它强烈支持准备好的语句(它必须在幕后为您使用):您使用占位符 (?) 指定参数和提供一个对象数组来填充参数。 (最后一个参数是预期结果的类型,但这与本题关系不大。)

您还可以使用 NamedParameterJdbcTemplate 并在 Map 中提供参数,这可能效率较低,但肯定更容易内存。

关于spring - Spring JDBC 是否提供任何针对 SQL 注入(inject)攻击的保护?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7254534/

相关文章:

java - 在 Spring 中实现 CrudRepository。我应该遵循的最佳设计是什么?

security - SQL 注入(inject)的非编程预防

php - MySQL 是否有针对基于 URL 的攻击的内置注入(inject)攻击保护?

java - jdbcTemplate.update(String sql) 行为异常

java - 如何将ResourceBundle中的所有值读取到Map/InputStream Spring中

spring - 在grails集成测试中创建的 protected 用户是未经授权的,但被引导用户是

java - Spring @Component中使用@PostContruct初始化数据

ruby-on-rails - Rails 5.2.3 上的危险查询方法弃用警告

java - JDBCTemplate INSERT INTO 语句 : Can't figure out error

sql-server - 无法将类型 'net.sourceforge.jtds.jdbc.ClobImpl' 的属性值转换为所需类型 'java.lang.String'