oracle-ibatis like 用法,各数据库的安全拼接方法
2014-08-13 16:07
323 查看
原文地址:http://hi.baidu.com/gonervergiveup/item/988fb21453af955ef1090edaiBatis解决sql注入
(1) ibatis xml配置:下面的写法只是简单的转义 namelike '%$name$%'
(2) 这时会导致sql注入问题,比如参数name传进一个单引号“'”,生成的sql语句会是:name like '%'%'
(3) 解决方法是利用字符串连接的方式来构成sql语句 name like '%'||'#name#'||'%'
(4) 这样参数都会经过预编译,就不会发生sql注入问题了。
(5) #与$区别:
#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
SELECT * FROM user WHERE username like '%$username$%' 的安全写法
Sql代码
SELECT * FROM user WHERE username like '%' || #username# || '%'
SELECT * FROM user WHERE username like '%' || #username# || '%'
其实上面的语句是针对Oracle 的,对于不同数据字符串连接符不一样。现列举mysql和SQLServer如下
(1) ibatis xml配置:下面的写法只是简单的转义 namelike '%$name$%'
(2) 这时会导致sql注入问题,比如参数name传进一个单引号“'”,生成的sql语句会是:name like '%'%'
(3) 解决方法是利用字符串连接的方式来构成sql语句 name like '%'||'#name#'||'%'
(4) 这样参数都会经过预编译,就不会发生sql注入问题了。
(5) #与$区别:
#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
SELECT * FROM user WHERE username like '%$username$%' 的安全写法
Sql代码
SELECT * FROM user WHERE username like '%' || #username# || '%'
SELECT * FROM user WHERE username like '%' || #username# || '%'
其实上面的语句是针对Oracle 的,对于不同数据字符串连接符不一样。现列举mysql和SQLServer如下
相关文章推荐
- ibatis like 用法,各数据库的安全拼接方法
- ibatis like 用法,各数据库的安全拼接方法
- Oracle 9i 数据库 数据导入和导出的最简单的方法
- 客户端不安装Oracle情况下连接数据库方法
- struts,Oracle 数据库 乱码解决方法
- 打造安全的Oracle数据库系统
- ORACLE跨数据库查询的方法
- 搞垮他的数据库--谈Oracle安全
- Oracle 数据库优化的R方法(Method R)
- Oracle 数据库优化的R方法(Method R)
- oracle 下 创建数据库和用户界面操作 和sql 语句 下的创建方法
- oracle 数据库一些单行函数的简单用法
- LINUX + ORACLE +RAC 最简化最重要步骤及多数据库自动启动方法
- 将ORACLE9数据库表内容输出到文本文件的两种方法(SPOOL / UTL_FILE)
- struts,Oracle 数据库 乱码解决方法
- 数据库安全:保证Oracle数据库安全性的策略和方法
- .net程序无法连接oracle9.2.0.1数据库解决方法
- oracle中substr()的用法和Oracle中INSTR方法
- 关于ibatis中like用法的补充
- Oracle 10G简单制作自启动关闭数据库脚本的方法