中文字幕第五页-中文字幕第页-中文字幕韩国-中文字幕最新-国产尤物二区三区在线观看-国产尤物福利视频一区二区

Mybatis防止sql注入的實(shí)例

sql注入大家都不陌生,是一種常見的攻擊方式,攻擊者在界面的表單信息或url上輸入一些奇怪的sql片段,例如“or ‘1'='1'”這樣的語句,有可能入侵參數(shù)校驗(yàn)不足的應(yīng)用程序。所以在我們的應(yīng)用中需要做一些工作,來防備這樣的攻擊方式。在一些安全性很高的應(yīng)用中,比如銀行軟件,經(jīng)常使用將sql語句全部替換為存儲(chǔ)過程這樣的方式,來防止sql注入,這當(dāng)然是一種很安全的方式,但我們平時(shí)開發(fā)中,可能不需要這種死板的方式。

網(wǎng)站設(shè)計(jì)制作過程拒絕使用模板建站;使用PHP+MYSQL原生開發(fā)可交付網(wǎng)站源代碼;符合網(wǎng)站優(yōu)化排名的后臺(tái)管理系統(tǒng);成都做網(wǎng)站、網(wǎng)站設(shè)計(jì)收費(fèi)合理;免費(fèi)進(jìn)行網(wǎng)站備案等企業(yè)網(wǎng)站建設(shè)一條龍服務(wù).我們是一家持續(xù)穩(wěn)定運(yùn)營(yíng)了十載的創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司。

mybatis框架作為一款半自動(dòng)化的持久層框架,其sql語句都要我們自己來手動(dòng)編寫,這個(gè)時(shí)候當(dāng)然需要防止sql注入。其實(shí)Mybatis的sql是一個(gè)具有“輸入+輸出”功能,類似于函數(shù)的結(jié)構(gòu),如下:

<select id="getBlogById" resultType="Blog" parameterType=”int”>
  select id,title,author,content
  from blog where id=#{id}
 </select>

這里,parameterType標(biāo)示了輸入的參數(shù)類型,resultType標(biāo)示了輸出的參數(shù)類型。回應(yīng)上文,如果我們想防止sql注入,理所當(dāng)然地要在輸入?yún)?shù)上下功夫。上面代碼中高亮部分即輸入?yún)?shù)在sql中拼接的部分,傳入?yún)?shù)后,打印出執(zhí)行的sql語句,會(huì)看到sql是這樣的:

select id,title,author,content from blog where id = ?

不管輸入什么參數(shù),打印出的sql都是這樣的。這是因?yàn)閙ybatis啟用了預(yù)編譯功能,在sql執(zhí)行前,會(huì)先將上面的sql發(fā)送給數(shù)據(jù)庫進(jìn)行編譯,執(zhí)行時(shí),直接使用編譯好的sql,替換占位符“?”就可以了。因?yàn)閟ql注入只能對(duì)編譯過程起作用,所以這樣的方式就很好地避免了sql注入的問題。

mybatis是如何做到sql預(yù)編譯的呢?其實(shí)在框架底層,是jdbc中的PreparedStatement類在起作用,PreparedStatement是我們很熟悉的Statement的子類,它的對(duì)象包含了編譯好的sql語句。這種“準(zhǔn)備好”的方式不僅能提高安全性,而且在多次執(zhí)行一個(gè)sql時(shí),能夠提高效率,原因是sql已編譯好,再次執(zhí)行時(shí)無需再編譯。

話說回來,是否我們使用mybatis就一定可以防止sql注入呢?當(dāng)然不是,請(qǐng)看下面的代碼:

<select id="orderBlog" resultType="Blog" parameterType=”map”>
  select id,title,author,content
  from blog order by ${orderParam}
 </select>

仔細(xì)觀察,內(nèi)聯(lián)參數(shù)的格式由“#{xxx}”變?yōu)榱?{xxx}。如果我們給參數(shù)“orderParam”賦值為”id”,將sql打印出來,是這樣的:

select id,title,author,content from blog order by id

     顯然,這樣是無法阻止sql注入的。在mybatis中,”${xxx}”這樣格式的參數(shù)會(huì)直接參與sql編譯,從而不能避免注入攻擊。但涉及到動(dòng)態(tài)表名和列名時(shí),只能使用“${xxx}”這樣的參數(shù)格式,所以,這樣的參數(shù)需要我們?cè)诖a中手工進(jìn)行處理來防止注入。

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

分享標(biāo)題:Mybatis防止sql注入的實(shí)例
本文網(wǎng)址:http://www.2m8n56k.cn/article0/gsegoo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營(yíng)銷型網(wǎng)站建設(shè)動(dòng)態(tài)網(wǎng)站網(wǎng)站營(yíng)銷標(biāo)簽優(yōu)化網(wǎng)站導(dǎo)航Google

廣告

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

成都定制網(wǎng)站建設(shè)
主站蜘蛛池模板: 亚洲影院在线 | 国产91一区二区在线播放不卡 | 91精品91| 欧美激情毛片裸推荐 | 99国产精品视频久久久久 | 亚洲欧美精品一区天堂久久 | 日本理论片免费高清影视在线观看 | 免费视频亚洲 | 日韩色在线 | 日本高清免费视频www | jk制服福利在线播放 | 国产dvd毛片在线视频 | 久久精品在线视频 | 欧美日韩顶级毛片www免费看 | 国产精品欧美亚洲韩国日本不卡 | 日韩不卡一区二区 | 中文字幕亚洲精品 | 一区二区三区四区在线免费观看 | 精品午夜寂寞黄网站在线 | 男女男精品视频网站在线观看 | 国产精品久久久久久久午夜片 | 欧美日韩另类视频 | 欧美视频自拍偷拍 | 欧美一级成人免费大片 | 日韩三级黄 | 欧美日韩一区二区不卡三区 | 欧美一区二区三区男人的天堂 | 国产一区二区三区不卡免费观看 | 精品国产日韩亚洲一区在线 | 成 人 黄 色 大 片 | 农村寡妇一级毛片免费播放 | 久久女厕一次看个够 | 手机看片在线 | 日韩久久久精品首页 | 在线观看亚洲国产 | 亚洲免费久久 | 亚洲成a人不卡在线观看 | 一本久道综合久久精品 | 武松金莲肉体交战在线观看 | japanese 色系 tube日本 | 波多野结衣一区二区 |