动态sql,主要是表名和字段名动态化, 怎样才能有效防止sql注入?

q3126287 2020-09-03 03:18:26
【求助】
动态sql,主要是表名和字段名动态化, 怎样才能有效防止sql注入?

接口传入参数进行过滤,我觉得这是一种办法, 但是应该不能百分百防止sql注入。

使用的mybatis框架。

...全文
17592 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
shuangmu9768 2020-09-10
  • 打赏
  • 举报
回复
检查注入的参数;复杂的话,可以用sql解析器解析下
s478853630 2020-09-09
  • 打赏
  • 举报
回复
动态SQL一般用于查询,都是select开头,不存在注入,实在不放心都用预编译; delete/insert/update,这些都用问号占位符,比如:delete from table where id = ?,哪儿还有什么注入
djw19901013 2021-11-19
  • 举报
回复 4
@s478853630 select * from tableA where tableA.columnA=$() 传入1;drop table tableA; 怎么就不存在注入??? 再不传入columnA,所有的数据全查出来 是不是注入?? 武断的一笔
s478853630 2021-11-22
  • 举报
回复
@djw19901013 你家的数据库,select后面跟一个drop还能运行,编译都通不过
q3126287 2020-09-06
  • 打赏
  • 举报
回复
引用 7 楼 冰思雨 的回复:
[quote=引用 楼主 q3126287 的回复:]【求助】 动态sql,主要是表名和字段名动态化, 怎样才能有效防止sql注入? 接口传入参数进行过滤,我觉得这是一种办法, 但是应该不能百分百防止sql注入。 使用的mybatis框架。
我这里只有一个比较复杂的实现方案,那就是编写mybatis插件(拦截器),自定义执行器或者参数处理器进行校验。 还可以配合自定义的annotation,在执行SQL语句之前,进行表名参数和字段参数的校验。 通过自定义的annotation来区分表名参数和字段参数。 校验过程是,在插件初始化的时候,从数据库中加载所有表的表名,以及字段名的信息。 然后在自定义的执行器或者参数处理器中,根据加载的这些信息进行校验。[/quote] 你的这个方式确实有点复杂,我看看这个实现的工作量要多少
冰思雨 2020-09-04
  • 打赏
  • 举报
回复
引用 楼主 q3126287 的回复:
【求助】 动态sql,主要是表名和字段名动态化, 怎样才能有效防止sql注入? 接口传入参数进行过滤,我觉得这是一种办法, 但是应该不能百分百防止sql注入。 使用的mybatis框架。
我这里只有一个比较复杂的实现方案,那就是编写mybatis插件(拦截器),自定义执行器或者参数处理器进行校验。 还可以配合自定义的annotation,在执行SQL语句之前,进行表名参数和字段参数的校验。 通过自定义的annotation来区分表名参数和字段参数。 校验过程是,在插件初始化的时候,从数据库中加载所有表的表名,以及字段名的信息。 然后在自定义的执行器或者参数处理器中,根据加载的这些信息进行校验。
q3126287 2020-09-04
  • 打赏
  • 举报
回复
引用 4 楼 nayi_224 的回复:
前台传编码,后台配置 编码---字段/表名 映射,在后台拼接
有道理,这样就相当于过滤, 但是到了mybatis那里 就用${}
q3126287 2020-09-04
  • 打赏
  • 举报
回复
有道理,这样就相当于过滤, 但是到了mybatis那里 就用${}
licip 2020-09-04
  • 打赏
  • 举报
回复
要灵活,又要安全,这确实很难办到,你自己说的是一种方式,其它方式应该会更麻烦。
nayi_224 2020-09-03
  • 打赏
  • 举报
回复
前台传编码,后台配置 编码---字段/表名 映射,在后台拼接
dkwuxiang 2020-09-03
  • 打赏
  • 举报
回复
都说是 表名 字段名 了,你们还用 #{} 能解析嘛?
xiong_zai_ 2020-09-03
  • 打赏
  • 举报
回复
用#不用$。
KeepSayingNo 2020-09-03
  • 打赏
  • 举报
回复 1
你用#{title} 这种方式,不要用 ${}。就是防注入

50,530

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧