[发明专利]使用Myabtis查询排序避免SQL注入的方法在审
申请号: | 202310471337.X | 申请日: | 2023-04-27 |
公开(公告)号: | CN116595030A | 公开(公告)日: | 2023-08-15 |
发明(设计)人: | 崔瑾;黄建杰 | 申请(专利权)人: | 央视国际网络无锡有限公司 |
主分类号: | G06F16/242 | 分类号: | G06F16/242;G06F21/55 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 214000 江苏省无锡市新区震泽*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 使用 myabtis 查询 排序 避免 sql 注入 方法 | ||
本发明是使用Myabtis查询排序避免SQL注入的方法,本质也采用设置白名单的思想,但不再通过增加各种冗余代码来实现,而是通过切面思想加反射机制在API入口处动态创建白名单统一业务处理判断,再结合统一异常处理机制,通知前端参数错误,如果通过白名单,正常调用后端的Mybatis服务,正常返回数据,以此避免SQL注入的情况。本发明的优点:1)代码简洁,切面集中处理,代码容易扩展和维护;2)无论是新项目,还是改造老项目,都能快速调整,可减少人力成本和减轻项目交付压力。
技术领域
本发明涉及的是使用Myabtis查询排序避免SQL注入的方法。
背景技术
在J2EE领域,Mybatis是一款优秀的持久层框架,它支持自定义SQL、存储过程以及高级映射。Mybatis免除了几乎所有的JDBC代码以及设置参数和获取结果集的工作。Mybatis可以通过简单的XML或注解来配置和映射原始类型、接口和Java POJO为数据库中的记录。
SQL注入是通过将恶意的SQL查询或添加语句插入到应用的输入参数中,再在后台SQL服务器上解析执行进行的攻击,可能对数据造成泄露或数据丢失的攻击行为,它目前是黑客对数据库进行攻击的最常见手段之一。
为便于理解,假设使用Java语言和SpringBoot框架进行开发。
由于Mybatis本身的机制,在使用过程中经常出现SQL注入。
在使用Mybatis时,普遍经常使用XML节后拼接SQL语句的方式,在使用拼接SQL语句时,需考虑如何把入参拼接到语句中去。一般有两种语法来完成入参的解析,分别是#{}和${},这两种方式区别如下:
#{}会进行预编译,而且进行类型匹配,相当于jdbc中的PreparedStatement,在SQL语句中#{}表示一个占位符,会将传入的数据都当成一个字符串,会对自动传入的数据自动加一个双引号,经常用于变量的传递。
${}不会进行数据类型匹配,本质上是字符串拼接,经常用于常量的传递,例如表名、字段名等。
#{}可以避免SQL注入,但是${}无法避免。一般在使用Mybatis进行业务查询时,查询哪些库和表是确定的,库名是在驱动链接时指定,表名在具体业务查询时指定,但是排序的字段可能是不定的。一个很常用的场景就是列表页面,用户需要根据不同的字段进行排序,那排序的字段需要使用入参来指定,在具体SQL语句中也只能通过${}来引用排序字段,例如如下:
select name,age from t_user order by ${columnName} ${direction}
在这样的情景下极容易发生SQL注入的场景,direction只有ASC和DESC,入口可以做限制,但是columnName是动态的,就会出现注入的情况。
为了避免出现以上的注入情况,现有技术中一般有如下两种解法:
方法一:避免SQL语句拼接,完全使用Mybatis的API规范进行查询操作。
方法二:入口处手动增加排序字段白名单,只有在白名单的排序入参才放行,否则报错。
避免SQL语句拼接,如果只是对单表进行的查询操作,则难度不大;如果是复杂的业务,需要关联多张表,结合表的关联方式、查询条件、分页等各种场景,难度会比较大,同时对团队开发成员的要求会比较高,出问题也不好调试。如果是老项目的话,这种方式改造成本太高、风险太大。
在入口处手动增加排序字段白名单,这种方式会增加很多冗余代码,导致代码丑陋,很难维护。对老项目改造的成本也比较大。
发明内容
本发明提出的是使用Myabtis查询排序避免SQL注入的方法,其目的旨在克服现有技术存在的上述不足,降低维护难度,降低改造成本。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于央视国际网络无锡有限公司,未经央视国际网络无锡有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202310471337.X/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种流化床化工污泥热解装置
- 下一篇:一种空间用衰变热斯特林转换装置