Spring Boot 清理原始SQL字符串Java JDBC模板

wfauudbj  于 7个月前  发布在  Spring
关注(0)|答案(1)|浏览(103)

我的团队在前端使用了一个查询构建器,它构建了SQL的where子句部分,并将其传递到后端以运行预览查询功能,
我现在要做的是防止SQL注入,因为完整SQL的形成有这样的概念:
第一个月
使用JDBC模板执行代码:
List<Map<String, String>> rows = jdbcTemplate.queryForLists(sql);
使用参数化查询是不可能的,因为我们无法预测它将被过滤的可能列,什么是确保这是安全的SQL注入的最佳方法?

pwuypxnk

pwuypxnk1#

将您的jdbcTemplate替换为NamedParameterJdbcTemplate
这将保存您一般从SQL注入。检查spring-doc
下面是一个baeldung的例子

String SELECT_BY_ID = "SELECT COUNT(*) FROM EMPLOYEE WHERE FIRST_NAME = :firstName";

SqlParameterSource namedParameters = new BeanPropertySqlParameterSource(employee);
return namedParameterJdbcTemplate.queryForObject(
  SELECT_BY_ID, namedParameters, Integer.class);

字符串

相关问题