常見JavaWeb安全問題有哪些

這篇文章給大家分享的是有關(guān)常見JavaWeb安全問題有哪些的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過來看看吧。

創(chuàng)新互聯(lián)建站成立于2013年,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站設(shè)計(jì)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元囊謙做網(wǎng)站,已為上家服務(wù),為囊謙各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:13518219792

1.SQL注入:程序向后臺(tái)數(shù)據(jù)庫(kù)傳遞SQL時(shí),用戶提交的數(shù)據(jù)直接拼接到SQL語句中并執(zhí)行,從而導(dǎo)入SQL注入攻擊。

字符型注入:黑色部分為拼接的問題參數(shù)

select * from t_user where name='test' or '1' = '1';

數(shù)字型注入:黑色部分為拼接的問題參數(shù)(對(duì)于強(qiáng)類型語言,字符串轉(zhuǎn)int類型會(huì)拋異常。所以這種注入方式一般出現(xiàn)在php等弱類型語言上)

select * from t_user where id=1;drop table t_userinfo;

搜索型注入:對(duì)表名進(jìn)行猜測(cè)

select * from t_user where userName like ‘%test%' and 1=2 union select 1,2 from t_admin';

修復(fù)方法:

a、在mybatis中使用#把參數(shù)當(dāng)做一個(gè)字符串,不能使用$符號(hào)

b、在JDBC中使用預(yù)編譯的方式對(duì)參數(shù)進(jìn)行綁定,詳細(xì)如下:

String userName = request.getParameter("userName");
String sql = "select * from t_user where userName = ?";
JdbcConnection conn = new JdbcConnection();
PreparedStatement pstmt = conn.preparedStatement(sql);
pstmt.setString(1,userName);

2、XSS跨站腳本攻擊(惡意將腳本代碼植入到供其他用戶使用的頁面中)

反射型:經(jīng)過后端,不經(jīng)過數(shù)據(jù)庫(kù)

存儲(chǔ)型:經(jīng)過后端經(jīng)過數(shù)據(jù)庫(kù)

DOM型:基于文檔對(duì)象模型DOM,通過控制url參數(shù)觸發(fā)

修復(fù)方法:

a、后臺(tái)設(shè)置XSSFilter,繼承RequestServletWrapper類,對(duì)前端請(qǐng)求中的可控參數(shù)進(jìn)行過濾

b、服務(wù)端設(shè)置Http-only安全屬性,使瀏覽器控制cookie不被泄露

c、對(duì)引入到DOM中的參數(shù)使用htmlEncodeByRegExp編碼,在對(duì)應(yīng)的展示框中用htmlDecodeByRegExp進(jìn)行解碼(比較常用)

var HtmlUtil = {
   /*1.用正則表達(dá)式實(shí)現(xiàn)html轉(zhuǎn)碼*/
   htmlEncodeByRegExp:function (str){ 
      var s = "";
      if(str.length == 0) return "";
     s = str.replace(/&/g,"&");
      s = s.replace(/</g,"&lt;");
      s = s.replace(/>/g,"&gt;");
      s = s.replace(/ /g,"&nbsp;");
     s = s.replace(/\'/g,"&#39;");
     s = s.replace(/\"/g,"&quot;");
     return s; 
  },
  /*2.用正則表達(dá)式實(shí)現(xiàn)html解碼*/
  htmlDecodeByRegExp:function (str){ 
     var s = "";
     if(str.length == 0) return "";
     s = str.replace(/&amp;/g,"&");
     s = s.replace(/&lt;/g,"<");
     s = s.replace(/&gt;/g,">");
     s = s.replace(/&nbsp;/g," ");
     s = s.replace(/&#39;/g,"\'");
     s = s.replace(/&quot;/g,"\"");
     return s; 
 }
};

3、敏感信息泄露

程序造成的泄露:

1、服務(wù)端返回冗余敏感數(shù)據(jù):用戶只申請(qǐng)了單個(gè)賬戶的信息,卻返回了多個(gè)用戶的信息

2、將敏感信息直接寫在前端頁面的注釋中

3、寫在配置文件的密碼未進(jìn)行編碼處理

4、請(qǐng)求參數(shù)敏感信息未脫敏處理(可以將數(shù)據(jù)在前端用RSA加密,后臺(tái)在進(jìn)行解密)

5、前端展示的敏感信息,沒有在后臺(tái)進(jìn)行脫敏處理(后臺(tái)對(duì)數(shù)據(jù)進(jìn)行處理,可以將中間部分使用*號(hào)代替)

6、越權(quán)

4、越權(quán):攻擊者能夠執(zhí)行本身沒有資格執(zhí)行的權(quán)限

水平越權(quán):權(quán)限類型不變,權(quán)限Id變化(同等角色下的用戶,不但能夠訪問自己私有的數(shù)據(jù),還能訪問其他人私有的數(shù)據(jù))

垂直越權(quán):權(quán)限ID不變,權(quán)限類型變化(即低權(quán)限的角色通過一些途徑,獲得高權(quán)限的能力)

交叉越權(quán):上面兩者的交集

修復(fù)方法:

1、根據(jù)請(qǐng)求攜帶的用戶信息進(jìn)行鑒權(quán)操作,對(duì)當(dāng)前請(qǐng)求攜帶的用戶信息進(jìn)行用戶角色和數(shù)據(jù)權(quán)限匹配。每一個(gè)重要操作的功能、分步操作的每個(gè)階段都進(jìn)行權(quán)限判斷。權(quán)限不足就中斷操作。

5、文件下載:

任意文件下載:下載服務(wù)器的任意文件,web業(yè)務(wù)的代碼,服務(wù)器和系統(tǒng)的具體配置信息,也可以下載數(shù)據(jù)庫(kù)的配置信息,以及對(duì)內(nèi)網(wǎng)的信息探測(cè)等等

文件越權(quán)下載:

修復(fù)方法:

1、針對(duì)任意文件下載的修復(fù),增加當(dāng)前請(qǐng)求下載的文件上一級(jí)的絕對(duì)路徑同配置文件中允許下載的路徑直接的比較(file.getCanonicalFile().getParent()獲取上一級(jí)的絕對(duì)路徑)

if(!file.getCanonicalFile().getParent().equals(new File(Constants.TMP_PATH).getCanonicalPath())){
return ;
}

2、文件越權(quán)下載:允許下載之前對(duì)請(qǐng)求所帶的用戶信息進(jìn)行判斷,擁有足夠的權(quán)限菜允許下載。

6、文件上傳:網(wǎng)絡(luò)攻擊者上傳了一個(gè)可執(zhí)行的文件到服務(wù)器并執(zhí)行。這里上傳的文件可以是木馬,病毒,惡意腳本或者WebShell等。

修復(fù)方法:

1、客戶端、服務(wù)端白名單驗(yàn)證(不建議用黑名單),客戶端的校驗(yàn)不夠安全,很容易被繞過。

String fileName = file.getOriginalFilename();
String extName = fileName.subString(fileName.lastIndexof(".")+1);

獲取上傳文件的后綴名,并同白名單上的后綴名進(jìn)行比較,包含在白名單上則允許通過,不包含則直接中斷請(qǐng)求。

2、MiME類型檢測(cè):文件上傳時(shí)瀏覽器會(huì)在Header中添加MIMETYPE識(shí)別文件類型,服務(wù)端要對(duì)此進(jìn)行檢測(cè)。

String mime = file.getContentType();//獲取文件的ContentType類型值

同白名單上的contentType類型名進(jìn)行比較,包含在白名單上則允許通過,不包含則直接中斷請(qǐng)求。

3、文件內(nèi)容檢測(cè):用不同的方法將不同的文件內(nèi)容流的進(jìn)行讀取。

BufferedImage image = ImageIO.read(file.getInputStream());

7、CSRF:跨站請(qǐng)求偽造,完成CSRF攻擊,需要完成兩個(gè)步驟:1、登錄受信任的網(wǎng)站A,并在本地生成cookie;2、在不登出A的情況下,訪問危險(xiǎn)網(wǎng)站B

CSRF本質(zhì)原因:Web的隱式身份驗(yàn)證機(jī)制。Web的身份驗(yàn)證機(jī)制雖然可以保證請(qǐng)求來自用戶的瀏覽器,但是無法保證該請(qǐng)求時(shí)用戶批準(zhǔn)發(fā)送的。

修復(fù)方法:

CSRF Token校驗(yàn):在頁面中添加一個(gè)hidden用于存放token字段,請(qǐng)求發(fā)送時(shí)攜帶token到服務(wù)端,服務(wù)端校驗(yàn)token值是否準(zhǔn)確。不準(zhǔn)確直接中斷操作

感謝各位的閱讀!關(guān)于“常見JavaWeb安全問題有哪些”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

網(wǎng)頁題目:常見JavaWeb安全問題有哪些
當(dāng)前路徑:http://bm7419.com/article16/goscgg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信公眾號(hào)、網(wǎng)站設(shè)計(jì)企業(yè)建站、網(wǎng)站營(yíng)銷、網(wǎng)站策劃搜索引擎優(yōu)化

廣告

聲明:本網(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;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站建設(shè)