ibatis模糊查询的like '%$name$%'的sql注入避免。
在用ibatis进行模糊查询的时候很多同学习惯用like'%$name$%'的方式,其实这种方式会造成sql注入。ibatis对于$符号的处理是默认不加’‘号的,所以如果传入的参数是:
1'或者是1231%'or 1%' = '1这些形式就回造成注入危险。
解决是避免用like '%$name$%',可以进行字符的拼接进行规避,比如oracle:like'%'||#name#||'%';mysql:likeconcat('%',#name#,'%');
为了防止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 #+'%