今天親自試了一把,原來ibatis中的$是如此的危險(xiǎn),如果你用$的話,很可能就會(huì)被sql注入!!!
所以:
使用:select * from t_user where name like '%'||#name #||'%'
禁用:select * from t_user where name like '%'||'$name$'||'%'
解釋:
預(yù)編譯語句已經(jīng)對(duì)oracle的特殊字符單引號(hào),進(jìn)行了轉(zhuǎn)義。即將單引號(hào)視為查詢內(nèi)容,而不是字符串的分界符。
由于SQL注入其實(shí)就是借助于特殊字符單引號(hào),生成or 1= 1這種格式的sql。預(yù)編譯已經(jīng)對(duì)單引號(hào)進(jìn)行了處理,所以可以防止SQL注入
更多信息請(qǐng)查看IT技術(shù)專欄