mybatis中的#和$的區(qū)別

#相當于對數(shù)據(jù) 加上 雙引號,$相當于直接顯示數(shù)據(jù)

 

創(chuàng)新互聯(lián)擁有網(wǎng)站維護技術(shù)和項目管理團隊,建立的售前、實施和售后服務體系,為客戶提供定制化的成都網(wǎng)站制作、成都網(wǎng)站建設、網(wǎng)站維護、成都服務器托管解決方案。為客戶網(wǎng)站安全和日常運維提供整體管家式外包優(yōu)質(zhì)服務。我們的網(wǎng)站維護服務覆蓋集團企業(yè)、上市公司、外企網(wǎng)站、電子商務商城網(wǎng)站建設、政府網(wǎng)站等各類型客戶群體,為全球上千余家企業(yè)提供全方位網(wǎng)站維護、服務器維護解決方案。

1. #將傳入的數(shù)據(jù)都當成一個字符串,會對自動傳入的數(shù)據(jù)加一個雙引號。如:order by #user_id#,如果傳入的值是111,那么解析成sql時的值為order by "111", 如果傳入的值是id,則解析成的sql為order by "id".
 
2. $將傳入的數(shù)據(jù)直接顯示生成在sql中。如:order by $user_id$,如果傳入的值是111,那么解析成sql時的值為order by user_id,  如果傳入的值是id,則解析成的sql為order by id.
 
3. #方式能夠很大程度防止sql注入。
 
4.$方式無法防止Sql注入。

5.$方式一般用于傳入數(shù)據(jù)庫對象,例如傳入表名.
 
6.一般能用#的就別用$.


MyBatis排序時使用order by 動態(tài)參數(shù)時需要注意,用$而不是#


字符串替換
默認情況下,使用#{}格式的語法會導致MyBatis創(chuàng)建預處理語句屬性并以它為背景設置安全的值(比如?)。這樣做很安全,很迅速也是首選做法,有時你只是想直接在SQL語句中插入一個不改變的字符串。比如,像ORDER BY,你可以這樣來使用:
ORDER BY ${columnName}
這里MyBatis不會修改或轉(zhuǎn)義字符串。

重要:接受從用戶輸出的內(nèi)容并提供給語句中不變的字符串,這樣做是不安全的。這會導致潛在的SQL注入攻擊,因此你不應該允許用戶輸入這些字段,或者通常自行轉(zhuǎn)義并檢查。

當前文章:mybatis中的#和$的區(qū)別
文章起源:http://bm7419.com/article34/jdcise.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供軟件開發(fā)、App開發(fā)、網(wǎng)站內(nèi)鏈虛擬主機、面包屑導航、全網(wǎng)營銷推廣

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁設計公司