簡體   English   中英

轉義字符以避免在Java中使用XSS

[英]Escaping characters to avoid XSS in Java

我需要轉義字符以避免XSS。 我正在使用org.apache.commons.lang.StringEscapeUtils.escapeHtml(String str),它以下列方式提供幫助:

原始輸入

" onmouseover=alert() src="

轉義后的HTML變成

" onmouseover=alert() src="

但是,在某些情況下,反射的輸入會被用單引號引起來,例如:

test'];}alert();if(true){//

在這種特殊情況下,轉義HTML不會產生任何效果。 但是,org.apache.commons.lang.StringEscapeUtils也有一個名為escapeJavascript(String str)的方法,該方法會將輸入轉換為:

test\'];}alert();if(true){\/\/

這里的問題是,您是否要通過先轉義HTML然后再轉義Javascript來清理輸入? 另一種方法是用\\'手動替換單引號字符。

任何幫助將不勝感激!

正如@ gabor-lengyel提到的那樣,我應該能夠使用html編碼器轉義單個引號。

我遇到的問題是我使用的是org.apache.commons.lang.stringescapeutils.escapeHtml ,它無法用相應的HTML實體轉義單引號。 我現在正在使用org.springframework.web.util.HtmlUtils.htmlEscape ,它能夠處理雙引號和單引號。

再次感謝@ gabor-lengyel的幫助!

您不需要為XSS保護使用escapeJavascript / escapeEcmaScript escapeHtml輸出添加到您的站點應該是安全的:

"<p>" + escapeHtml(userProvided) + "</p>"

如果您想要以下內容:

 "<p class='" + userProvided + "'>" 

確保安全性要困難得多,您可能想使用合法字符/值的白名單(例如regexps [aZ](option1|option2) )),並丟棄所有意外內容而不是轉義它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM