xss mybatis sql注入漏洞修改小技巧

2024-09-03  本文已影响0人  爱吃赵一鸣

 公司一直使用mybatis作为orm框架,SQL统一管理在xml文件中。最近客户系统上线前进行系统等保检查,反馈有大量的SQL注入漏洞,需要进行修复才能上线。

        查看发过来的文档,问题SQL集中在几种SQL,ids参数值'aa','bb' name参数值 aa

1、select a.fid,a.fname from a where a.fid in(${ids})

2、select a.fid,a.fname from a where a.fname like'%${name}%'

        mybatis中使用#号占位符会根据参数值类型增加引号,而$占位符则是直接显示原值,所以存在被SQL注入的可能。系统中大量存在这样的写法,如果改传值需要去修改代码的逻辑,工作量太大。如果改xml就能修复这个问题,工作量少很多,第2条比较简单,第1条复杂点,试了多次终于可以了,下面是方案,使用eclipse的正则替换,半小时就把这个问题解决了

1、selecta.fid,a.fname from a where a.fid in<foreach collection="ids.replace("'","").split(',')" index="index" item="item"open="(" separator=","close=")">#{item,jdbcType=VARCHAR}</foreach>

2、select a.fid,a.fname from a where a.fname like concat('%',#{name},'%')

       等保现在是系统上线的基本要求了,所以 工作中mybatis推荐使用#占位符,避免SQL注入,

上一篇 下一篇

猜你喜欢

热点阅读