[发明专利]使用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注入的方法,其目的旨在克服现有技术存在的上述不足,降低维护难度,降低改造成本。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于央视国际网络无锡有限公司,未经央视国际网络无锡有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/202310471337.X/2.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top