2017-09-12 70 views
0

使用Checkmarx,這一頁有多個「request.getParameterNames()」用途,並被Checkmarx標記爲「CGI_Reflected_XSS_All_Clients」(查詢名稱)。該頁面是「error.jsp」,因此它是在我公司的多個應用程序中使用的常見頁面。發生意外錯誤時顯示此頁面。爲什麼這樣?誰知道,最好不要顯示它,而只是將其註銷。我對Checkmarx報告的易損壞代碼非常陌生。如何避免使用這一點scrip的XSS?

<h3>Request Parameters</h3> 
<pre> 
<% 
    lEnum = request.getParameterNames(); 
    while(lEnum.hasMoreElements()) 
    { 
     String key = (String)lEnum.nextElement(); 
     String[] paramValues = request.getParameterValues(key); 
     for(int i = 0; i < paramValues.length; i++) 
     { 
     out.println(" " + key + " : " + paramValues[i]); 
     } 
    } 
%> 
</pre> 

回答

1

輸出到頁面的值需要爲HTML轉義。用它們的實體替換引號,括號和&符號。這可以通過庫如Guava喜歡做:

Escaper escaper = HtmlEscapers.htmlEscaper(); 
out.println(" " + escaper.escape(key) + " : " + escaper.escape(paramValues[i])); 
0

使用Spring的Web的HtmlUtils.htmlEscape(可變)傳遞給方法前消毒參數。

此外,您還可以嘗試

變量= Variable.replace( 「」「, 」「); 也是如此。

在傳遞給方法之前,在參數上使用這兩個參數。