- 浏览: 113396 次
- 性别:
- 来自: 福建
文章分类
最新评论
-
wenbing2610:
其实用Struts实现图片上传比用Servlet实现容易多了。 ...
Struts2文件上传深入FileUploadInterceptor -
i_feng:
public class uploadImageAction ...
Struts2文件上传深入FileUploadInterceptor -
wenbing2610:
...
ognl.MethodFailedException
对于ibaits参数引用可以使用#和$两种写法,其中#写法会采用预编译方式,将转义交给了数据库,不会出现注入问题;如果采用$写法,则相当于拼接字符串,会出现注入问题。
例如,如果属性值为“' or '1'='1 ”,采用#写法没有问题,采用$写法就会有问题。
对于like语句,难免要使用$写法,
1. 对于Oracle可以通过'%'||'#param#'||'%'避免;
2. 对于MySQL可以通过CONCAT('%',#param#,'%')避免;
3. MSSQL中通过'%'+#param#+'% 。
4. #与$区别:#xxx# 代表xxx是属性值,map里面的key或者是你的pojo对象里面的属性, ibatis会自动在它的外面加上引号,表现在sql语句是这样的 where xxx = 'xxx' ;
$xxx$ 则是把xxx作为字符串拼接到你的sql语句中, 比如 order by topicId , 语句这样写 ... order by #xxx# ibatis 就会把他翻译成 order by 'topicId' (这样就会报错) 语句这样写 ... order by $xxx$ ibatis 就会把他翻译成 order by topicId
为了防止SQL注入,iBatis模糊查询时也要避免使用$$来进行传值。下面是三个不同数据库的ibatis的模糊查询传值。
- mysql: select * from stu where name like concat('%',#name #,'%')
- oracle: select * from stu where name like '%'||#name #||'%'
- SQL Server:select * from stu where name like '%'+#name #+'%
如:
- <!-- 用途:小二后台查询活动的数目 -->
- <select id="countActivitySearch" resultClass="java.lang.Long" parameterClass="actDO">
- <![CDATA[
- select count(id) from activity
- ]]>
- <dynamic prepend="WHERE">
- <isNotNull prepend=" AND " property="name">
- name LIKE CONCAT('%', #name#, '%')
- </isNotNull>
- <isNotNull prepend=" AND " property="itemId">
- itemId = #itemId#
- </isNotNull>
- <isNotNull prepend=" AND " property="itemName">
- itemName LIKE CONCAT('%', #itemName#, '%')
- </isNotNull>
- <isNotNull prepend=" AND " property="status">
- status = #status#
- </isNotNull>
- <isNotNull prepend=" AND " property="actStatus">
- actStatus = #actStatus#
- </isNotNull>
- <isNotNull prepend=" AND " property="domain">
- domain LIKE CONCAT('%', #domain#, '%')
- </isNotNull>
- </dynamic>
- </select>
- <!-- 用途:小二后台查询活动的列表 -->
- <select id="searchActivityForList" resultMap="actResult" parameterClass="actDO">
- <![CDATA[
- select * from activity
- ]]>
- <dynamic prepend="WHERE">
- <isNotNull prepend=" AND " property="name">
- name LIKE CONCAT('%', #name#, '%')
- </isNotNull>
- <isNotNull prepend=" AND " property="itemId">
- itemId = #itemId#
- </isNotNull>
- <isNotNull prepend=" AND " property="itemName">
- itemName LIKE CONCAT('%', #itemName#, '%')
- </isNotNull>
- <isNotNull prepend=" AND " property="status">
- status = #status#
- </isNotNull>
- <isNotNull prepend=" AND " property="actStatus">
- actStatus = #actStatus#
- </isNotNull>
- <isNotNull prepend=" AND " property="domain">
- domain LIKE CONCAT('%', #domain#, '%')
- </isNotNull>
- </dynamic>
- <![CDATA[
- order by starttime desc, createtime desc
- limit
- #startRow#, #perPageSize#
- ]]>
- </select>
不要这样来写:
- <select id="searchActivityForCount" resultClass="java.lang.Long" >
- <![CDATA[
- select count(*) from activity
- ]]>
- <dynamic prepend="WHERE">
- <isNotNull prepend=" AND " property="name">
- name LIKE '%$name$%'
- </isNotNull>
- <isNotNull prepend=" AND " property="itemId">
- itemId LIKE '%$itemId$%'
- </isNotNull>
- <isNotNull prepend=" AND " property="itemName">
- itemName LIKE '%$itemName$%'
- </isNotNull>
- <isNotNull prepend=" AND " property="status">
- status = #status#
- </isNotNull>
- <isNotNull prepend=" AND " property="actStatus">
- actStatus = #actStatus#
- </isNotNull>
- <isNotNull prepend=" AND " property="domain">
- domain LIKE '%$domain$%'
- </isNotNull>
- </dynamic>
- </select>
- <select id="searchActivityForList" resultMap="actResult" parameterClass="actDO">
- <![CDATA[
- select * from activity
- ]]>
- <dynamic prepend="WHERE">
- <isNotNull prepend=" AND " property="name">
- name LIKE '%$name$%'
- </isNotNull>
- <isNotNull prepend=" AND " property="itemId">
- itemId LIKE '%$itemId$%'
- </isNotNull>
- <isNotNull prepend=" AND " property="itemName">
- itemName LIKE '%$itemName$%'
- </isNotNull>
- <isNotNull prepend=" AND " property="status">
- status = #status#
- </isNotNull>
- <isNotNull prepend=" AND " property="actStatus">
- actStatus = #actStatus#
- </isNotNull>
- <isNotNull prepend=" AND " property="domain">
- domain LIKE '%$domain$%'
- </isNotNull>
- </dynamic>
- <![CDATA[
- order by starttime desc, createtime desc
- limit
- #startRow#, #perPageSize#
- ]]>
- </select>
发表评论
-
CSS样式表的overflow属性
2015-01-02 19:22 28一、滚动条样式overflow ... -
jrebel运用
2014-07-13 22:00 1144JRebel热部署 ... -
JPA执行原生SQL截断Char类型问题
2014-05-24 21:39 1137在JPA的API中执行原生 ... -
JPA基本数据类型映射
2014-05-24 21:06 3842/** ... -
spring定时器配置
2014-03-18 21:36 656创建测试类: ... -
The Struts dispatcher cannot be found
2013-11-03 18:48 614运行环境:struts2环境中访 ... -
JasperException
2013-09-15 20:41 985JasperException异常: ... -
equal symbol expected
2013-09-15 20:08 1140equal symbol ... -
Hibernate主键生成器
2013-09-12 21:11 759... -
Criterion和Criteria
2013-09-08 16:00 1854Hibernate Criter ... -
getHibernateTemplate用法
2013-09-08 15:02 541HibernateTemplate提供的方法 ... -
JS中页面跳转
2013-09-08 14:01 617<html><head><t ... -
GridPanel详解
2013-03-10 10:45 9921、Ext.grid.GridPanel ... -
tomcat内存溢出
2013-03-04 20:26 689在使用Java程序从数据库中查询大量的数据或 ... -
History Object
2013-01-07 21:06 708history 对象是window 对象的另一个子 ... -
Write to programmer
2012-12-29 20:16 806很多的java初级程序员对自己没有一个明确的方 ... -
EL语言
2012-09-27 22:08 847EL的前世今生: ... -
JSTL标签的使用
2012-09-27 22:00 752JSP 标准标记库( Standard Tag Library ... -
IBATIS动态SQL标签用法
2012-08-26 21:04 11451、动态SQL片段通过SQL片 ... -
java.sql.SQLException
2012-08-21 14:34 1485Oracle的数据库驱动有两种,oci和th ...
相关推荐
方法一:利用google高级搜索,比如搜索url如.asp?... 您可能感兴趣的文章:Java面试题解析之判断以及防止SQL注入SQL注入原理与解决方法代码示例通过ibatis解决sql注入问题Win2003服务器防SQL注入神器–D盾_IIS防火墙
主要介绍了通过ibatis解决sql注入问题,需要的朋友可以参考下
iBATIS-SqlMaps-2-Tutorial_cniBATIS-SqlMaps-2-Tutorial_cn.pdf.pdfiBATIS-SqlMaps-2-Tutorial_cn.pdfiBATIS-SqlMaps-2-Tutorial_cn.pdf
ibatis 开发指南 和 iBATIS-SqlMaps两本图书
[iBATIS]sql转换工具 简单哦~ 项目组自己写的哦~分享给大家了
iBATIS-SqlMaps2入门代码文档
webwork+ibatis+sqlserver2000完整实例
通过java程序查看ibatis配置文件中的sql语句(注:无法查看变量值)
iBATIS-SqlMaps ibatis入门教程,教你如何做配置ibatis
iBATIS-SqlMaps-2_cn中文文档
ibatis常用sql语句,简单易懂,方便查询,初学者宝典
在ibatis日志信息中打印SQL语句的方法(个人总结)
动态sql拼接
ibatis的dtd
iBATIS-SqlMaps,ibatis映射文件
自己整理的非常好用 好东西向大家分享 └ ^o^ ┘
IBatis-SQL-MAPs 开发指南IBatis-SQL-MAPs 开发指南IBatis-SQL-MAPs 开发指南IBatis-SQL-MAPs 开发指南IBatis-SQL-MAPs 开发指南
iBATIS-SqlMaps
ibatis-SqlMaps-开发指南-version 1.0; ibatis-SqlMaps-开发指南-version 2