浏览 2615 次
锁定老帖子 主题:ibatis # $ 之间的差异
该帖已经被评为新手帖
|
|
---|---|
作者 | 正文 |
发表时间:2011-05-14
这是这段时间工作遇到的一个问题,在写模糊查询的时候我用的是 like '%$param$%',引起的问题是如果是param中含有特殊字符会早晨sql语法错误,如果改为like '%' || #param# || '%' ,这样则可以避免错误,原因是 #param# 这样翻译到jdbc时是 preparedstatement 去执行,而$param$ 则是statement ,里面的特殊符号没有进过转义,所以建议如果是在程序中自己写好的变量可以为$param$,从页面接受的参数一律为#param# 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2011-05-15
$param$是动态sql,#param#是绑定变量
|
|
返回顶楼 | |
发表时间:2011-05-17
$容易造成SQL注入,而且不对特殊字符进行转移,用#比较安全。
|
|
返回顶楼 | |
发表时间:2011-05-17
请问 防止sql 注入的 方法是什么?难道不是 讲sql中的 特殊字符 给转移掉吗? 例如 你写的是 select * from tablename where name = 'xx'xx' ,这个分号不是特殊字符吗 是不是要 用\来转义?
|
|
返回顶楼 | |
发表时间:2011-05-24
kaobian 写道 请问 防止sql 注入的 方法是什么?难道不是 讲sql中的 特殊字符 给转移掉吗? 例如 你写的是 select * from tablename where name = 'xx'xx' ,这个分号不是特殊字符吗 是不是要 用\来转义? select * from tablename where name='$param$'; 如果你根据某一个字段值查询数据,当param为“' or '1'='1”会是什么情况 |
|
返回顶楼 | |