1. 程式人生 > >Java WEB安全問題及解決方案

Java WEB安全問題及解決方案

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”);
冒號後面是一個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.lang.OutOfMemoryError解決方案

找到 method bug 自己的 bootstrap set muc initial uri 主要有3種比較常見的OutOfMemory Error: java.lang.OutOfMemoryError: Java heap space java.lang.OutOf

java web跨域解決方案

跨域問題產生的原因是由於在瀏覽器的訪問域名為A網站時,A網站的頁面訪問B域名的網路請求時,使用A的域名請求B的業務兩個請求為服務不在同一域名下從而產生的問題。(通常在Ifream,ajax請求外網伺服器產生該問題出現) 具體解決機制為: B域名下服務允許A域名下的網頁內部請求B的服務 解

web安全問題解決方案

1. 防止網站被人巢狀 解決方法: 在該jsp檔案的頂部加入 <% response.setHeader("X-Frame-Options","SAMEORIGIN"); %>

工作中碰到的Java問題整理解決方案

1.SOH分隔符(Notepad++) SOH是ASCII碼錶為ASCII值==1的控制字元(不可見)char字元:0x01 Java String.split() 以SOH為分隔符的字串 //第一種方案(最優解決方案) lineTxt.split("\001"

Java WEB專案安全問題解決方案

1.弱口令漏洞 解決方案:最好使用至少6位的數字、字母及特殊字元組合作為密碼。資料庫不要儲存明文密碼,應儲存MD5加密後的密文,由於目前普通的MD5加密已經可以被破解,最好可以多重MD5加密,或者多種加密方式疊加組合。 2.未使用使用者名稱及密碼登入後臺可直接輸入後臺

Java WEB安全問題解決方案

1.弱口令漏洞 解決方案:最好使用至少6位的數字、字母及特殊字元組合作為密碼。資料庫不要儲存明文密碼,應儲存MD5加密後的密文,由於目前普通的MD5加密已經可以被破解,最好可以多重MD5加密。 2.未使用使用者名稱及密碼登入後臺可直接輸入後臺URL登入系統。 解決方

Java Web亂碼分析解決方案(一)——GET請求亂碼

引言: 在進行Web開始時,亂碼是我們最經常遇到也是最基本的問題,有經驗的程式猿很容易能解決,初學者則容易被泥潭困住。而且很多時候,我們即使解決了亂碼問題也是不明就裡,往往雲裡霧裡。 其實亂碼問題很簡

Java Web亂碼分析解決方案(三)——響應亂碼

Java Web亂碼分析 -- 響應亂碼 響應亂碼 請求亂碼是客戶端向伺服器傳送資料時,伺服器解碼錯誤。響應亂碼則是伺服器處理完請求後,輸出到瀏覽器的資料被瀏覽器錯誤解碼造成的顯示亂碼,這類亂碼是最常見也是最直接的。 造成這類亂碼大部分情況是:伺服器對Content-T

常見web安全隱患解決方案

Abstract 有關於WEB服務以及web應用的一些安全隱患總結資料。 1. 常見web安全隱患 1.1.       完全信賴使用者提交內容   開發人員決不能相信一個來自外部的資料。不管它來自使用者提交表單,檔案系統的檔案或者環境變數,任何資料都不能簡單的想

Java Web專案過程中遇到的幾個問題解決方案

java.lang.NoClassDefFoundError: javax/el/ELResolver    java.lang.ClassLoader.defineClass1(Native Method)    java.lang.ClassLoader.defineClass(ClassLoader.j

Java Web亂碼分析解決方案(二)——POST請求亂碼

引言     GET請求的本質表現是將請求引數放在URL位址列中,form表單的Method為GET的情況,引數會被瀏覽器預設編碼,所以亂碼處理方案是一樣的。對於POST請求亂碼,解決起來要比GET簡單,我們關心的重點是在Request Body中。 請求亂碼——Meth

asp.net MVC 常見安全問題解決方案

container coo baidu his ring article 調試工具 並且 part asp.net MVC 常見安全問題及解決方案一.CSRF (Cross-site request forgery跨站請求偽造,也被稱為“one click attack”或

Java常見的幾種內存溢出解決方案

-xmx 系列 lba pan fff 特征 聚類算法 聲明 space 1.JVM Heap(堆)溢出:java.lang.OutOfMemoryError: Java heap space JVM在啟動的時候會自動設置JVM Heap的值, 可以利用JVM提

ios系統web(微信公眾號)開發遇到的問題解決方案

編輯 doc pretty ram body abs 系統 stc 大神 1.1. 頁面滾動不流暢(2017-09-25) 現象: 網頁豎向滾動或橫向滾動不流暢。 解決方案: 為滾動元素添加css樣式: -webkit-overflow-scrolling: tou

java分布式事務,解決方案

ted 即使 線下 提升 nts 20px lan term 不能 1、什麽是分布式事務 分布式事務就是指事務的參與者、支持事務的服務器、資源服務器以及事務管理器分別位於不同的分布式系統的不同節點之上。以上是百度百科的解釋,簡單的說,就是一次大的操作由不同的小操作組成,這些

Asp.Net MVCWeb API框架配置會碰到的幾個問題解決方案(轉)

erb his 控制 NPU vat types ror 控制器 動手 前言 剛開始創建MVC與Web API的混合項目時,碰到好多問題,今天拿出來跟大家一起分享下。有朋友私信我問項目的分層及文件夾結構在我的第一篇博客中沒說清楚,那麽接下來我就準備從這些文件怎麽分文件夾說起

Java程式碼執行記憶體溢位詳解解決方案

記憶體溢位與資料庫鎖表的問題,可以說是開發人員的噩夢,一般的程式異常,總是可以知道在什麼時候或是在什麼操作步驟上出現了異常,而且根據堆疊資訊也很容易定位到程式中是某處出現了問題。記憶體溢位與鎖表則不然,一般現象是操作一般時間後系統越來越慢,直到宕機,但並不能明確是在什麼操作上出現的,發生的時間

java遇到的一些問題解決方案(持續更新)

問題1:  錯誤:編碼GBK的不可對映字元 解決辦法:(修改編碼) 輸入javac  -encoding utf-8  檔名.java  2、問題public static void main(String[] args)解釋 這裡要

Web大規模高併發請求和搶購的原理解決方案

電商的秒殺和搶購,對我們來說,都不是一個陌生的東西。然而,從技術的角度來說,這對於Web系統是一個巨大的考驗。當一個Web系統,在一秒鐘內收到數以萬計甚至更多請求時,系統的優化和穩定至關重要。這次我們會關注秒殺和搶購的技術實現和優化,同時,從技術層面揭開,為什麼我們總是不容易搶到火車票的原因?&nb

java.util.NoSuchElementException錯誤原因解決方案

1.原因:沒有控制語句導致的迭代器的越界,使得map中的資料無法傳入reduce,從而無法把結果傳入目標檔案中。 在進行Mapreduce例項——WordCount實驗時遇到的錯誤,開始以為是lib包匯入和讀取原始檔格式的問題,後來無論怎麼修改都會報這個錯誤,報錯如下: java.lang.Excepti