Java WEB安全問題及解決方案


1.弱口令漏洞

 
解決方案:最好使用至少6位的數字、字母及特殊字符組合作為密碼。數據庫不要存儲明文密碼,應存儲MD5加密后的密文,由於目前普通的MD5加密已經可以被破解,最好可以多重MD5加密。
 
2.未使用用戶名及密碼登錄后台可直接輸入后台URL登錄系統。
 
解決方案:通過配置filter來過濾掉無效用戶的連接請求。
 
3.JSP頁面拋出的異常可能暴露程序信息。有經驗的入侵者,可以從JSP程序的異常中獲取很多信息,比如程序的部分架構、程序的物理路徑、 SQL注入爆出來的信息等。
 
解決方案:自定義一個Exception,將異常信息包裝起來不要拋到頁面上。
 
4.合法用戶“注銷”后,在未關閉瀏覽器的情況下,點擊瀏覽器“后退”按鈕,可從本地頁面緩存中讀取數據,繞過了服務端filter過濾。
解決方案:配置filter對存放敏感信息的頁面限制頁面緩存。如:
 
在CODE上查看代碼片派生到我的代碼片
httpResponse.setHeader("Cache-Control","no-cache");   
httpResponse.setHeader("Cache-Control","no-store");  
httpResponse.setDateHeader("Expires", 0);  
httpResponse.setHeader("Pragma","no-cache");  
5. SQL注入漏洞。
 
解決方案:在數據庫訪問層中不要使用“+”來拼接SQL語句!如:
 
在CODE上查看代碼片派生到我的代碼片
String sql=SELECT * FROM USERS WHERE 1=1”;  
if(null != user.getUserName() && !””.equals(user.getUserName())){  
    sql +=and UNAME = ‘”+user.getUserName()+”’”;  
}  
而應使用PreparedStatement。如:
在CODE上查看代碼片派生到我的代碼片
PreparedStatement pstmt = con.prepareStatement("SELECT * FROM USERS WHERE UNAME=?");  
pstmt.setString(1, “Neeke”);  
冒號后面是一個named parameter,我們可以使用Query接口將一個參數綁定到name參數上:
在CODE上查看代碼片派生到我的代碼片
List result = session.createQuery(queryString)  
                  .setString("name", user.getUserName())  
                  .list();  
6.文件上傳漏洞。前台僅使用JS對文件后綴做了過濾,這只能針對普通的用戶,而惡意攻擊者完全可以修改表單去掉JS校驗。
 
解決方案:前台JS過濾加服務器端程序過濾。具體過濾掉哪些文件類型視具體情況而定。
 
7.可執行腳本漏洞。對用戶提交的數據未轉義,一些用戶提交的含有JavaScript腳本的信息被直接輸出到頁面中從而被瀏覽器執行。
 
解決方案:使用org.apache.commons.lang.StringEscapeUtils對用戶提交的數據進行轉義。如:
 
在CODE上查看代碼片派生到我的代碼片
@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。
 
解決方案:最好刪除,如需要使用它來管理維護,可更改其默認路徑,口令及密碼。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM