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/