ibatis解决sql注入问题
原文:?http://blog.csdn.net/scorpio3k/article/details/7610973?
對于ibaits參數引用可以使用#和$兩種寫法,其中#寫法會采用預編譯方式,將轉義交給了數據庫,不會出現注入問題;如果采用$寫法,則相當于拼接字符串,會出現注入問題。
例如,如果屬性值為“'?or?'1'='1?”,采用#寫法沒有問題,采用$寫法就會有問題。
對于like語句,難免要使用$寫法,
?1.?對于Oracle可以通過'%'||#param#||'%'避免;
?2.?對于MySQL可以通過CONCAT('%',#param#,'%')避免;
?3.?MSSQL中通過'%'+#param#+'%?。?
?
如下3種SQL語句:
?
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?#+'% ?
?
補充:
例子如:
name like ?'%'||#name#||'%' ? ?(不會被注入)
等于 ? ?
name like '%$name$%'(會被注入)
轉載于:https://www.cnblogs.com/wdw31210/p/3659133.html
總結
以上是生活随笔為你收集整理的ibatis解决sql注入问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: (转载)谈谈JS里的{ }大括号和[ ]
- 下一篇: Adroid真机调试