2014-04-02 43 views
0

我繼承的傳統應用程序,並有如下的代碼片段與腳本有關的HTML標籤的不當中立性。Veracode的 - 在一個網頁(基本XSS)

private static void printKeywordCheckboxes(JspWriter out, ArrayList words, int type) 
throws IOException { 

    LogbookKeyword thisWord; 

    Iterator iterWord = words.iterator(); 
    while (iterWord.hasNext()) { 

     thisWord = (LogbookKeyword) iterWord.next(); 
     out.println(" <input type=\"checkbox\" name=\"keywordCheckbox" + 
     type + "\" value=\"" + 
     thisWord.hashCode() + "\" checked/>" + 
     thisWord.getWord() + "<br>"); 
    } 
} 

Veracode的拋出一個異常「的網頁(基本XSS)腳本相關的HTML標記的不當中和」在「通過out.println()」。

任何人都可以讓我知道這個問題應該怎麼解決嗎?任何幫助將不勝感激。

回答

1

的問題是,「話」被傳遞到你的方法,但沒有之前被使用的這些中和 - 的話習慣「原樣」,所以可能包含造成傷害的腳本。有一個很好的描述解釋了這個以及它爲什麼是一個問題:http://www.veracode.com/images/pdf/top5mostprevalent.pdf

當你生成這個HTML時,你將需要中和用戶輸入 - 在將它轉換爲HTML之前確保它是無害的。我的Java是有些生疏,但一谷歌給了我們一些建議:

有提示這個小抄讀:https://www.owasp.org/index.php/XSS_%28Cross_Site_Scripting%29_Prevention_Cheat_Sheet

0

還要注意,有一定的淨化作用是Veracode的認識在Java中已經審查和Veracode的安全團隊判決同意。您可以在Veracode幫助中心找到該列表。

+0

感謝蒂姆。您能否讓我知道清潔功能或與veracode幫助中心的鏈接。我無法在他們的網站上找到它 – user3487820

0
在網頁中的腳本相關的HTML標記的

不當中和(基本XSS)(CWE ID 80)

說明概要

該軟件接收來自上游組件輸入,但它不會消毒或不正確地進行消毒特殊字符,如「<」,「>」和「&」,當它們被髮送到處理網頁的下游部件,其可被解釋爲web的腳本元素。

擴展描述

這可以允許這樣的字符被作爲控制字符,這是在用戶的會話的上下文中執行的客戶端處理。雖然這可以被歸類爲注射的問題,更爲相關的問題是,它們顯示給用戶之前,這樣的特殊字符相應的背景下,適當的實體轉換失敗。

public static String encodeHTML(String s) 
    { 
    StringBuffer out = new StringBuffer(); 
    for(int i=0; i<s.length(); i++) 
     { 
     char c = s.charAt(i); 
     if(c > 127 || c=='"' || c=='<' || c=='>') { 
     out.append("&#"+(int)c+";"); 
     } 
     else { 
     out.append(c); 
    } 
} 
    return out.toString(); 
} 

Is there a JDK class to do HTML encoding (but not URL encoding)?