[实践总结] 如何防护order by导致的SQL注入

发布时间:2023年12月30日

背景

如果order by使用用户输入的内容而不经过校验,则会引起order by类型SQL注入,可能导致数据库dos攻击。

如何防护?

第1步:找出给order by赋值的地方

1.使用PageHelper排序

PageHelper.startPage(pageNum , pageSize);PageHelper.orderBy("字段名 排序规律");

PageHelper.startPage(pageNum, pageSize, "字段名 排序规律")

Ctrl+Shift+F → startPage → Ctrl+Alt+F7 → Ctrl+Alt+H

2.使用自定义排序

XXXExample example = new XXXExample();
example.setOrderByClause("字段名1 ASC/DESC,字段名2 ASC/DESC,...");

Ctrl+Shift+F → .setOrderBy → Ctrl+Alt+H

3.使用Mybatis排序

查看Mybatis 的 SQL配置文件,order by使用的事${},导致SQL注入
Ctrl+Alt+H

第2步:判断order by使用值是否为外部入参

第3步:改进代码

3.1、order by使用的外部入参进行 白名单校验

3.2、SQL里的${}#{}

参考

Mybatis+PageHelper查询结果排序两种方式

文章来源:https://blog.csdn.net/weixin_37646636/article/details/135300420
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。