运用IBATIS防止sql注入
使用IBATIS防止sql注入?????????? 对于ibaits参数引用可以使用#和$两种写法,其中#写法会采用预编译方式,将
使用IBATIS防止sql注入
?????????? 对于ibaits参数引用可以使用#和$两种写法,其中#写法会采用预编译方式,将转义交给了数据库,不会出现注入问题;如果采用$写法,则相当于拼接字符串,会出现注入问题。
例如,如果属性值为“' or '1'='1 ”,采用#写法没有问题,采用$写法就会有问题。
??????? 对于like语句,难免要使用$写法,
??????? 1. 对于Oracle可以通过'%'||'#param#'||'%'避免;
??????? 2. 对于MySQL可以通过CONCAT('%',#param#,'%')避免;
??????? 3. MSSQL中通过?
?
?
<select?id="searchActivityForCount"?resultClass="java.lang.Long"?> ??????????<![CDATA[ ??????????????select?count(*)?from?activity ?? ????????????]]> ?????????? ??????????<dynamic?prepend="WHERE"> ?? ????????????<isNotNull?prepend="?AND?"?property="name"> ?? ????????????????name?LIKE?'%$name$%'?? ????????????</isNotNull> ??????????????<isNotNull?prepend="?AND?"?property="itemId"> ?? ????????????????itemId?LIKE?'%$itemId$%'?? ????????????</isNotNull> ??????????????<isNotNull?prepend="?AND?"?property="itemName"> ?? ????????????????itemName?LIKE?'%$itemName$%'?? ????????????</isNotNull>????????? ??????????????<isNotNull?prepend="?AND?"?property="status"> ?? ????????????????status?=?#status# ??????????????</isNotNull>? ??????????????<isNotNull?prepend="?AND?"?property="actStatus"> ?? ????????????????actStatus?=?#actStatus# ??????????????</isNotNull>?????????? ??????????????<isNotNull?prepend="?AND?"?property="domain"> ?? ????????????????domain?LIKE?'%$domain$%'?? ????????????</isNotNull> ??????????</dynamic> ?? ????</select> ?? ???? ??????<select?id="searchActivityForList"?resultMap="actResult"?parameterClass="actDO"> ?? ????????<![CDATA[ ??????????????select?*?from?activity? ?? ????????]]> ?????????? ??????????<dynamic?prepend="WHERE"> ?? ????????????<isNotNull?prepend="?AND?"?property="name"> ?? ????????????????name?LIKE?'%$name$%'?? ????????????</isNotNull> ??????????????<isNotNull?prepend="?AND?"?property="itemId"> ?? ????????????????itemId?LIKE?'%$itemId$%'?? ????????????</isNotNull> ??????????????<isNotNull?prepend="?AND?"?property="itemName"> ?? ????????????????itemName?LIKE?'%$itemName$%'?? ????????????</isNotNull>????????? ??????????????<isNotNull?prepend="?AND?"?property="status"> ?? ????????????????status?=?#status# ??????????????</isNotNull>? ??????????????<isNotNull?prepend="?AND?"?property="actStatus"> ?? ????????????????actStatus?=?#actStatus# ??????????????</isNotNull>?????????? ??????????????<isNotNull?prepend="?AND?"?property="domain"> ?? ????????????????domain?LIKE?'%$domain$%'?? ????????????</isNotNull> ??????????</dynamic> ?? ???????? ??????????<![CDATA[ ??????????????order?by?starttime?desc,?createtime?desc?? ????????????limit? ??????????????????#startRow#,?#perPageSize#??? ??????????]]> ??????</select>??