一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務器之家 - 編程語言 - JAVA教程 - 淺談mybatis中的#和$的區別 以及防止sql注入的方法

淺談mybatis中的#和$的區別 以及防止sql注入的方法

2020-06-26 15:27jingxian JAVA教程

下面小編就為大家帶來一篇淺談mybatis中的#和$的區別 以及防止sql注入的方法。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

mybatis中的#和$的區別

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


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

防止Sql注入

注意:SQL語句不要寫成select * from t_stu where s_name like '%$name$%',這樣極易受到注入攻擊。

”${xxx}”這樣格式的參數會直接參與sql編譯,從而不能避免注入攻擊。但涉及到動態表名和列名時,只能使用“${xxx}”這樣的參數格式。

在編寫mybatis的映射語句時,盡量采用“#{xxx}”這樣的格式。若不得不使用“${xxx}”這樣的參數,要手工地做好過濾工作,來防止sql注入攻擊。

例子

?
1
2
3
4
5
<sql id="condition_where"
  <isNotEmpty property="companyName" prepend=" and "
    t1.company_name like #companyName# 
  </isNotEmpty> 
</sql>

java代碼和你原來的差不多,其實也沒什么不好,你要覺得麻煩 把判斷null和'%'封裝到一個方法里就可以了

?
1
2
3
if (!StringUtil.isEmpty(this.companyName)) { 
  table.setCompanyName("%" + this.companyName + "%"); 
}

以上就是小編為大家帶來的淺談mybatis中的#和$的區別 以及防止sql注入的方法全部內容了,希望大家多多支持服務器之家~

延伸 · 閱讀

精彩推薦
  • JAVA教程java實現將數字轉換成人民幣大寫

    java實現將數字轉換成人民幣大寫

    前面給大家介紹過使用javascript,php,c#,python等語言實現人民幣大寫格式化,這篇文章主要介紹了java實現將數字轉換成人民幣大寫的代碼,非常的簡單實用...

    hebedich3792019-12-15
  • JAVA教程Java for循環詳解

    Java for循環詳解

    這篇文章主要介紹了Java for循環方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來...

    東邊的雨田3712019-06-23
  • JAVA教程java jdk動態代理詳解

    java jdk動態代理詳解

    動態代理類的Class實例是怎么生成的呢,是通過ProxyGenerator類來生成動態代理類的class字節流,把它載入方法區 ...

    java技術網1672019-10-14
  • JAVA教程spring boot之SpringApplication 事件監聽

    spring boot之SpringApplication 事件監聽

    這篇文章主要介紹了spring boot之SpringApplication 事件監聽,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧...

    posuoren5282019-06-24
  • JAVA教程java運行shell腳本方法示例

    java運行shell腳本方法示例

    利用Runtime.execute方法,我們可以在Java程序中運行Linux的Shell腳本,或者執行其他程序 ...

    java教程網5582019-10-24
  • JAVA教程java關鍵字final使用方法詳解

    java關鍵字final使用方法詳解

    在程序設計中,我們有時可能希望某些數據是不能夠改變的,這個時候final就有用武之地了。final是java的關鍵字,本文就詳細說明一下他的使用方法 ...

    java教程網3542019-10-21
  • JAVA教程深入解析Java的Hibernate框架中的持久對象

    深入解析Java的Hibernate框架中的持久對象

    Hibernate的持久對象在數據庫數據操作中有著重要作用,這里我們就來深入解析Java的Hibernate框架中的持久對象,首先必須從理解持久化對象的生命周期開始: ...

    zhang_xinxiu3522020-05-24
  • JAVA教程Java中5種方式實現String反轉

    Java中5種方式實現String反轉

    下面小編就為大家帶來一篇Java中5種方式實現String反轉。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。 ...

    jingxian3662020-05-23
主站蜘蛛池模板: 极品丝袜乱系列在线阅读 | 国产成人夜色影视视频 | 日本韩国在线 | 青草午夜精品视频在线观看 | 四虎国产欧美成人影院 | 欧美xxx000喷水 | 慢慢娇淫 | 香蕉久久高清国产精品免费 | 女人又色又爽又黄 | 亚洲日韩精品欧美一区二区一 | 精品国偷自产在线 | 成人在线播放视频 | 国产自拍啪啪 | 高清国产欧美一v精品 | 免费看国产一级特黄aa大片 | 色图18p| 全肉一女n男np高h乳 | 国产主播福利在线观看 | 99久女女精品视频在线观看 | 99热.com | 色爱导航 | 久久学生精品国产自在拍 | 国产播放器一区 | 荡女人人爱 | 国产一区二区视频在线观看 | 好大好深好涨好烫还要 | 亚洲成色 | 男人j放进女人的p视频免费 | 久久精品动漫网一区二区 | 精品一区二区三区五区六区七区 | 国产免费小视频在线观看 | 好吊色青青青国产综合在线观看 | x8x8国产在线观看2021 | 91探花在线播放 | 国产精品免费一级在线观看 | 思思玖玖玖在线精品视频 | 思思久久精品在热线热 | 纲手被强喷水羞羞漫画 | 新影音先锋男人色资源网 | 1024免费永久福利视频 | 国产原创精品 |