ibatis解决sql注入问题
原文:?http://blog.csdn.net/scorpio3k/article/details/7610973?
對(duì)于ibaits參數(shù)引用可以使用#和$兩種寫(xiě)法,其中#寫(xiě)法會(huì)采用預(yù)編譯方式,將轉(zhuǎn)義交給了數(shù)據(jù)庫(kù),不會(huì)出現(xiàn)注入問(wèn)題;如果采用$寫(xiě)法,則相當(dāng)于拼接字符串,會(huì)出現(xiàn)注入問(wèn)題。
例如,如果屬性值為“'?or?'1'='1?”,采用#寫(xiě)法沒(méi)有問(wèn)題,采用$寫(xiě)法就會(huì)有問(wèn)題。
對(duì)于like語(yǔ)句,難免要使用$寫(xiě)法,
?1.?對(duì)于Oracle可以通過(guò)'%'||#param#||'%'避免;
?2.?對(duì)于MySQL可以通過(guò)CONCAT('%',#param#,'%')避免;
?3.?MSSQL中通過(guò)'%'+#param#+'%?。?
?
如下3種SQL語(yǔ)句:
?
1?mysql:?select?*?from?t_user?where?name?like?concat('%',#name?#,'%')????
2????
3?oracle:?select?*?from?t_user?where?name?like?'%'||#name?#||'%'???
4????
5?SQL?Server:select?*?from?t_user?where?name?like?'%'+#name?#+'% ?
?
補(bǔ)充:
例子如:
name like ?'%'||#name#||'%' ? ?(不會(huì)被注入)
等于 ? ?
name like '%$name$%'(會(huì)被注入)
轉(zhuǎn)載于:https://www.cnblogs.com/wdw31210/p/3659133.html
總結(jié)
以上是生活随笔為你收集整理的ibatis解决sql注入问题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: (转载)谈谈JS里的{ }大括号和[ ]
- 下一篇: CentOS下系统时间同步和时区的修改和