ibatis的SQL注入,证实了我此前的想法
来源:互联网 发布:ubuntu卸载安装的qq 编辑:程序博客网 时间:2024/05/05 18:52
在项目中,运用Ibatis中Like写法,没有研究下,结果SQL语句存在SQL注入漏洞,整理下,下次谨记啊!
sql语句:
- select *
- from (select 1 from poll
- <dynamic prepend=" where ">
- <isNotEmpty prepend=" and " property="title">
- title like '%$title$%'
- </isNotEmpty>
- <isNotEmpty property="used">
- <isEqual compareValue="true" prepend=" and " property="used">
- <![CDATA[status & 2 > 0 and status & 1 <= 0 and status & 8 <= 0 ]]>
- </isEqual>
- </isNotEmpty>
- <isNotEmpty prepend=" and " property="startTimeBegin">
- <![CDATA[ gmt_create >= #startTimeBegin# ]]>
- </isNotEmpty>
- <isNotEmpty prepend=" and " property="startTimeEnd">
- <![CDATA[ gmt_create <= #startTimeEnd# ]]>
- </isNotEmpty>
- </dynamic>
- limit 10000
- ) as t
请关注此写法的:
- title like '%$title$%'
存在SQL注入漏洞。
下面是一段单元测试:
- PollQuery query = new PollQuery();
- query.setCurrentPage(1);
- query.setPageSize(50);
- query.setTitle("1231%' or '1%' = '1");//很简单的写法:(
- List<SnsPollDO> l = pollDAO.findPollList(query);
- System.out.println(l.size())
测试结果(打印处的sql语句):
- select * from poll where title like '%1231%' or '1%' = '1%'
尽管 title 没匹配对,但是or后面那句是恒等的。哎!
看来下面的写法只是简单的转义下:
- title like '%$title$%'
如何解决:
在oracle下面改成:title like '%'||#title#||'%',这样肯定是可以的。
但是在mysql中,上述写法是不行,还是有上面的问题的:
- select * from poll where title like '%'||?||'%' order by gmt_create desc limit ?, ?
还能查出结果来!哎!
得用:title CONCAT('%',#title#,'%')
select * from poll where title like CONCAT('%',?,'%') order by gmt_create desc limit ?, ?
呵呵,多次测试均没有发现问题!
------------------------------------------
以下读者注:
是否为:title like CONCAT('%',#title#,'%')
- ibatis的SQL注入,证实了我此前的想法
- ibatis的SQL注入,证实了我此前的想法
- 关于ibatis的SQL注入。
- iBatis的SQL注入问题
- 突破SQL注入限制的一点想法
- 突破SQL注入限制的一点想法
- 突破SQL注入限制的一点想法
- 此前合作的咋样?
- 关于Ibatis 的自动防止SQL 注入
- iBatis解决sql注入问题的方法
- 关于Ibatis 的自动防止SQL 注入
- 我找了篇sea_bug的想法.:)
- 和老妈谈了一下我的想法
- 以下是某论坛坛主,给予的回复,证实了我的猜测
- ibatis模糊查询的like '%$name$%'的sql注入避免
- 注意使用Ibatis做like查询的时候SQL注入。
- 我的模糊想法
- 我的想法
- 插入排序算法
- [C#] C#编写事件或委托时如果处理不好会造成内存泄漏
- 关于技术的掌握
- CLR系列:浅析.NET的JIT编译
- 欢迎大家!
- ibatis的SQL注入,证实了我此前的想法
- [WEBSERVICE]web services 创建代理类库的方法
- Why should integrate Apache with Tomcat
- java字符串的各种编码转换
- 享有盛誉的PHP高级教程.:PHP高级程序设计:模式、框架与测试
- 一个很全的ARM开发博
- [WEBSERVICE]什么时候应该使用Web Service
- 炫目的敏捷架构师
- 关于"你的主机中的软件放弃了一个已建立的连接,127.0.0.1:80"的错误