您能解释一下 jdbcTemplate 方法 preparedStatementCallBack 和 preparedStatementSetter 之间的区别以避免 sql 注入吗?

Can you explain the difference between jdbcTemplate methods preparedStatementCallBack and preparedStatementSetter to avoid sql Injection?

提问人:Riya Jakhariya 提问时间:7/5/2021 最后编辑:Bruno MoraisRiya Jakhariya 更新时间:7/8/2021 访问量:512

问:

我想避免在我的应用程序中注入 sql。有两种 jdbcTemplate 方法,如

public <T> T execute(String sql,PreparedStatementCallback<T> action)throws DataAccessException

public <T> T query(String sql,@Nullable,PreparedStatementSetter pss,ResultSetExtractor<T> rse)
throws DataAccessException

您可以建议的任何其他方法来避免 sql 注入。 提前致谢。

java spring-mvc 准备语句 sql 注入 jdbctemplate

评论

0赞 Bruno Morais 7/6/2021
SQL注入是关于用户不当行为的,你能指定从用户到你的SQL语句的入口点是什么吗?我之所以问这个问题,是因为尽管使用了 JDBC 模板方法,但您可以清除这些用户输入,避免 SQL 注入。
0赞 Riya Jakhariya 7/7/2021
输入特定用户的 id(varchar) 并提交 .在后端,借助该 id 数据被检索并显示给用户。除此之外,您知道这两种方法之间的区别吗?我只是好奇地想知道其中的区别

答:

0赞 Bruno Morais 7/8/2021 #1

TL;博士

Execute 方法允许您在单个语句中执行任意数据访问操作。

查询方法允许您使用预准备语句发送查询

对于文档中的这些方法和所有其他方法,有一些方法可以处理相同的情况。由开发人员选择最适合其工作的方法。

作为建议,我建议使用一些模式,例如用于检索数据的查询方法,以及用于插入、更新或删除数据的 update 方法。