论坛首页 入门技术论坛

ibatis # $ 之间的差异

浏览 2615 次
该帖已经被评为新手帖
作者 正文
   发表时间:2011-05-14  

这是这段时间工作遇到的一个问题,在写模糊查询的时候我用的是 like '%$param$%',引起的问题是如果是param中含有特殊字符会早晨sql语法错误,如果改为like '%' || #param# || '%' ,这样则可以避免错误,原因是 #param# 这样翻译到jdbc时是 preparedstatement 去执行,而$param$ 则是statement ,里面的特殊符号没有进过转义,所以建议如果是在程序中自己写好的变量可以为$param$,从页面接受的参数一律为#param#

   发表时间:2011-05-15  
$param$是动态sql,#param#是绑定变量
0 请登录后投票
   发表时间:2011-05-17  
$容易造成SQL注入,而且不对特殊字符进行转移,用#比较安全。
0 请登录后投票
   发表时间:2011-05-17  
请问 防止sql 注入的 方法是什么?难道不是 讲sql中的 特殊字符 给转移掉吗? 例如 你写的是 select * from tablename  where name = 'xx'xx' ,这个分号不是特殊字符吗 是不是要 用\来转义?
0 请登录后投票
   发表时间:2011-05-24  
kaobian 写道
请问 防止sql 注入的 方法是什么?难道不是 讲sql中的 特殊字符 给转移掉吗? 例如 你写的是 select * from tablename  where name = 'xx'xx' ,这个分号不是特殊字符吗 是不是要 用\来转义?

select * from tablename where name='$param$';
如果你根据某一个字段值查询数据,当param为“' or '1'='1”会是什么情况
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics