2013-06-27 24 views
0

通常我使用veracode掃描我的代碼更改以檢測安全漏洞。現在有在DB串,我在一個叫custFunctionality串正在收集和以前我是在JSP作爲顯示此:如何避免在這個c:中出現XSS?

out.println(<%= custFunctionality %>); 

好Veracode的掃描,它讓我知道,它構成了一個安全缺陷。

所以我用c: out這裏:

<c:out escapexml='false' value='${custFunctionality }'/> 

現在,這裏的問題是,該字符串包含HTML標記相關的起來,我需要在頁面中,如果我不給顯示特殊字符這些字符和標記不會實現。但是,由於代碼中存在escapexml='false'字符串,這構成了veracode的安全缺陷,因爲我在重新掃描文件後發現它存在。

任何人都可以建議我一個替代解決方案出這個泥??

+0

任何解決方案的人? –

+0

「字符串由html相關的標記和特殊字符組成」 - 您能否澄清一下,如果您需要瀏覽器將這些HTML瀏覽器解釋爲HTML頁面的一部分或僅以視覺方式向用戶顯示? – u2702

+0

@ u2702:將以可視方式顯示給用戶,有時也會作爲html頁面的一部分顯示給用戶。 –

回答

0

你要求的是兩件不同的事情。採用特殊字符並直觀地向用戶顯示這些字符非常簡單。將它們作爲標記安全地插入頁面會更復雜。

視覺顯示:

你想在這裏做的是把瀏覽器想在爲標記的指示到瀏覽器的方式來解釋和逃避(或編碼),它的特殊字符,它應只是顯示。 Alex推薦了可以幫你做到的StringEscapeUtils。 (請記住,每個方面都有自己的規則,轉義爲HTML,所以什麼工作也不一定會爲CSS和JavaScript的工作。)

標記插入:

在這種情況下,你需要做的一些驗證輸入以確保您沒有插入影響頁面行爲方式的內容。插入一些...標記可能是好的,插入javascript是有風險的。挑戰在於捕捉人們試圖逃避過濾器的所有方式。如果您的網站足夠有趣,人們會嘗試利用此功能。