Java WEB安全問題及解決方案

來源:互聯網
上載者:User

標籤:

1.弱口令漏洞

解決方案:

最好使用至少6位的數字、字母及特殊字元組合作為密碼。資料庫不要儲存純文字密碼,應儲存MD5加密後的密文,由於目前普通的MD5加密已經可以被破解,最好可以多重MD5加密。

2.未使用使用者名稱及密碼登入後台可直接輸入後台URL登入系統。

解決方案:

通過配置filter來過濾掉無效使用者的串連請求。

3.JSP頁面拋出的異常可能暴露程式資訊。有經驗的入侵者,可以從JSP程式的異常中擷取很多資訊,比如程式的部分架構、程式的實體路徑、SQL注入爆出來的資訊等。

解決方案:

自訂一個Exception,將異常資訊封裝起來不要拋到頁面上。

4.合法使用者“登出”後,在未關閉瀏覽器的情況下,點擊瀏覽器“後退”按鈕,可從本地頁面緩衝中讀取資料,繞過了服務端filter過濾。

解決方案:

配置filter對存放敏感資訊的頁面限制頁面緩衝。如:

httpResponse.setHeader("Cache-Control","no-cache"); httpResponse.setHeader("Cache-Control","no-store");httpResponse.setDateHeader("Expires", 0);httpResponse.setHeader("Pragma","no-cache");

5.SQL注入漏洞。

解決方案:

在資料庫訪問層中不要使用“+”來拼接SQL語句!如:

String sql= “SELECT * FROM USERS WHERE 1=1”;if(null != user.getUserName() && !””.equals(user.getUserName())){sql += “ and UNAME = ‘”+user.getUserName()+”’”;}

而應使用PreparedStatement。如:

PreparedStatement pstmt = con.prepareStatement("SELECT * FROM USERS WHERE UNAME=?");pstmt.setString(1, “Neeke”);

如果項目中使用了Hibernate架構,則推薦使用named parameter。如:

String queryString = "from Users where uname like :name";

冒號後面是一個named parameter,我們可以使用Query介面將一個參數綁定到name參數上:

List result = session.createQuery(queryString)                  .setString("name", user.getUserName())                  .list();

6.檔案上傳漏洞。前台僅使用JS對檔案尾碼做了過濾,這隻能針對普通的使用者,而惡意攻擊者完全可以修改表單去掉JS校正。

解決方案:

前台JS過濾加伺服器端程式過濾。具體過濾掉哪些檔案類型視具體情況而定。

7.可執行指令碼漏洞。對使用者提交的資料未轉義,一些使用者提交的含有JavaScript指令碼的資訊被直接輸出到頁面中從而被瀏覽器執行。

解決方案:

使用org.apache.commons.lang.StringEscapeUtils對使用者提交的資料進行轉義。如:

@RequestMapping(params="method=addTopic",method=RequestMethod.POST)public ModelAndView addTopic(HttpServletRequest request, HttpServletResponse response, BbsTopic topic){BaseAdmin user = (BaseAdmin) request.getSession().getAttribute(Constant.SESSION_USER);topic.setBaseAdmin(user);topic.setTopicDate(new Timestamp(System.currentTimeMillis()));topic.setTopicContent(StringEscapeUtils.escapeHtml(topic.getTopicContent()));topic.setTopicTitle(StringEscapeUtils.escapeHtml(topic.getTopicTitle()));this.bbsTopicService.save(topic);return new ModelAndView(new RedirectView("bbs.do?method=topicList&bfid="+ topic.getBfid()));}

8.Java WEB容器預設配置漏洞。如TOMCAT後台管理漏洞,預設使用者名及密碼登入後可直接上傳war檔案擷取webshell。

解決方案:

最好刪除,如需要使用它來管理維護,可更改其預設路徑,口令及密碼。

Java WEB安全問題及解決方案

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.