亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

常見JavaWeb安全問題和解決方案

 更新時間:2020年03月20日 13:39:34   作者:風繾云流  
這篇文章主要介紹了常見JavaWeb安全問題和解決方案,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

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

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

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

數字型注入:黑色部分為拼接的問題參數(對于強類型語言,字符串轉int類型會拋異常。所以這種注入方式一般出現在php等弱類型語言上)

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

搜索型注入:對表名進行猜測

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

修復方法:

a、在mybatis中使用#把參數當做一個字符串,不能使用$符號

b、在JDBC中使用預編譯的方式對參數進行綁定,詳細如下:

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跨站腳本攻擊(惡意將腳本代碼植入到供其他用戶使用的頁面中)

反射型:經過后端,不經過數據庫

存儲型:經過后端經過數據庫

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

修復方法:

a、后臺設置XSSFilter,繼承RequestServletWrapper類,對前端請求中的可控參數進行過濾

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

c、對引入到DOM中的參數使用htmlEncodeByRegExp編碼,在對應的展示框中用htmlDecodeByRegExp進行解碼(比較常用)

var HtmlUtil = {
   /*1.用正則表達式實現html轉碼*/
   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.用正則表達式實現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、服務端返回冗余敏感數據:用戶只申請了單個賬戶的信息,卻返回了多個用戶的信息

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

  3、寫在配置文件的密碼未進行編碼處理

  4、請求參數敏感信息未脫敏處理(可以將數據在前端用RSA加密,后臺在進行解密)

  5、前端展示的敏感信息,沒有在后臺進行脫敏處理(后臺對數據進行處理,可以將中間部分使用*號代替)

  6、越權

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

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

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

  交叉越權:上面兩者的交集

修復方法:

  1、根據請求攜帶的用戶信息進行鑒權操作,對當前請求攜帶的用戶信息進行用戶角色和數據權限匹配。每一個重要操作的功能、分步操作的每個階段都進行權限判斷。權限不足就中斷操作。

5、文件下載:

任意文件下載:下載服務器的任意文件,web業(yè)務的代碼,服務器和系統的具體配置信息,也可以下載數據庫的配置信息,以及對內網的信息探測等等

文件越權下載:

修復方法:

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

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

2、文件越權下載:允許下載之前對請求所帶的用戶信息進行判斷,擁有足夠的權限菜允許下載。

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

修復方法:

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

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

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

2、MiME類型檢測:文件上傳時瀏覽器會在Header中添加MIMETYPE識別文件類型,服務端要對此進行檢測。

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

同白名單上的contentType類型名進行比較,包含在白名單上則允許通過,不包含則直接中斷請求。

3、文件內容檢測:用不同的方法將不同的文件內容流的進行讀取。

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

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

CSRF本質原因:Web的隱式身份驗證機制。Web的身份驗證機制雖然可以保證請求來自用戶的瀏覽器,但是無法保證該請求時用戶批準發(fā)送的。

修復方法:

CSRF Token校驗:在頁面中添加一個hidden用于存放token字段,請求發(fā)送時攜帶token到服務端,服務端校驗token值是否準確。不準確直接中斷操作

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • JAVA如何讀取Excel數據

    JAVA如何讀取Excel數據

    這篇文章主要介紹了JAVA如何讀取Excel數據,幫助大家更好的理解和學習Java,感興趣的朋友可以了解下
    2020-09-09
  • 利用Java實現在PDF中添加工具提示

    利用Java實現在PDF中添加工具提示

    這篇文章主要介紹了如何通過Java在PDF中添加工具提示,文中的示例代碼講解詳細,對我們學習或工作有一定的參考價值,感興趣的可以學習一下
    2022-01-01
  • swagger2隱藏在API文檔顯示某些參數的操作

    swagger2隱藏在API文檔顯示某些參數的操作

    這篇文章主要介紹了swagger2隱藏在API文檔顯示某些參數的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • 淺談maven單元測試設置代理

    淺談maven單元測試設置代理

    下面小編就為大家?guī)硪黄獪\談maven單元測試設置代理。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • Java兩整數相除向上取整的方式詳解(Math.ceil())

    Java兩整數相除向上取整的方式詳解(Math.ceil())

    在調外部接口獲取列表數據時,需要判斷是否已經取完了所有的值,因此需要用到向上取整,下面這篇文章主要給大家介紹了關于Java兩整數相除向上取整的相關資料,需要的朋友可以參考下
    2022-06-06
  • mybatis之調用帶輸出參數的存儲過程(Oracle)

    mybatis之調用帶輸出參數的存儲過程(Oracle)

    這篇文章主要介紹了mybatis調用帶輸出參數的存儲過程(Oracle),具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • Spring Boot實戰(zhàn)之發(fā)送郵件示例代碼

    Spring Boot實戰(zhàn)之發(fā)送郵件示例代碼

    本篇文章主要介紹了Spring Boot實戰(zhàn)之發(fā)送郵件示例代碼,具有一定的參考價值,有興趣的可以了解一下。
    2017-03-03
  • Spring中的攔截器HandlerInterceptor詳細解析

    Spring中的攔截器HandlerInterceptor詳細解析

    這篇文章主要介紹了Spring中的攔截器HandlerInterceptor詳細解析,HandlerInterceptor 是 Spring 框架提供的一個攔截器接口,用于在請求處理過程中攔截和處理請求,需要的朋友可以參考下
    2024-01-01
  • java開發(fā)之spring webflow實現上傳單個文件及多個文件功能實例

    java開發(fā)之spring webflow實現上傳單個文件及多個文件功能實例

    這篇文章主要介紹了java開發(fā)之spring webflow實現上傳單個文件及多個文件功能,結合具體實例形式分析了spring webflow文件上傳具體操作技巧,需要的朋友可以參考下
    2017-11-11
  • SPRINGMVC 406問題解決方案

    SPRINGMVC 406問題解決方案

    這篇文章主要介紹了SPRINGMVC 406問題解決方案,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-11-11

最新評論